<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span id="local-6989586621680932647"><span id="local-6989586621680932648"></span></span><span class="hs-comment">{-
(c) The GRASP/AQUA Project, Glasgow University, 1992-1998

Shared term graph (STG) syntax for spineless-tagless code generation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This data type represents programs just before code generation (conversion to
@Cmm@): basically, what we have is a stylised form of Core syntax, the style
being one that happens to be ideally suited to spineless tagless code
generation.
-}</span><span>
</span><span id="line-12"></span><span>
</span><span id="line-13"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-14"></span><span class="hs-pragma">{-# LANGUAGE DataKinds #-}</span><span>
</span><span id="line-15"></span><span class="hs-pragma">{-# LANGUAGE DeriveDataTypeable #-}</span><span>
</span><span id="line-16"></span><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><span id="line-17"></span><span class="hs-pragma">{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span><span>
</span><span id="line-18"></span><span class="hs-pragma">{-# LANGUAGE TypeFamilies #-}</span><span>
</span><span id="line-19"></span><span class="hs-pragma">{-# LANGUAGE UndecidableInstances #-}</span><span>
</span><span id="line-20"></span><span class="hs-pragma">{-# LANGUAGE ConstraintKinds #-}</span><span>
</span><span id="line-21"></span><span class="hs-pragma">{-# LANGUAGE LambdaCase #-}</span><span>
</span><span id="line-22"></span><span>
</span><span id="line-23"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Stg.Syntax</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-24"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier">StgArg</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-25"></span><span>
</span><span id="line-26"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgTopBinding"><span class="hs-identifier">GenStgTopBinding</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier">GenStgBinding</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier">GenStgExpr</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgRhs"><span class="hs-identifier">GenStgRhs</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-27"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgAlt"><span class="hs-identifier">GenStgAlt</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#AltType"><span class="hs-identifier">AltType</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-28"></span><span>
</span><span id="line-29"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPass"><span class="hs-identifier">StgPass</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier">BinderP</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#XRhsClosure"><span class="hs-identifier">XRhsClosure</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#XLet"><span class="hs-identifier">XLet</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#XLetNoEscape"><span class="hs-identifier">XLetNoEscape</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-30"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier">NoExtFieldSilent</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#noExtFieldSilent"><span class="hs-identifier">noExtFieldSilent</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-31"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutputablePass"><span class="hs-identifier">OutputablePass</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-32"></span><span>
</span><span id="line-33"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#UpdateFlag"><span class="hs-identifier">UpdateFlag</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#isUpdatable"><span class="hs-identifier">isUpdatable</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-34"></span><span>
</span><span id="line-35"></span><span>        </span><span class="hs-comment">-- a set of synonyms for the vanilla parameterisation</span><span>
</span><span id="line-36"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopBinding"><span class="hs-identifier">StgTopBinding</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgBinding"><span class="hs-identifier">StgBinding</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgExpr"><span class="hs-identifier">StgExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhs"><span class="hs-identifier">StgRhs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgAlt"><span class="hs-identifier">StgAlt</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-37"></span><span>
</span><span id="line-38"></span><span>        </span><span class="hs-comment">-- a set of synonyms for the code gen parameterisation</span><span>
</span><span id="line-39"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgTopBinding"><span class="hs-identifier">CgStgTopBinding</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgBinding"><span class="hs-identifier">CgStgBinding</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgExpr"><span class="hs-identifier">CgStgExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgRhs"><span class="hs-identifier">CgStgRhs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgAlt"><span class="hs-identifier">CgStgAlt</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-40"></span><span>
</span><span id="line-41"></span><span>        </span><span class="hs-comment">-- a set of synonyms for the lambda lifting parameterisation</span><span>
</span><span id="line-42"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgTopBinding"><span class="hs-identifier">LlStgTopBinding</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgBinding"><span class="hs-identifier">LlStgBinding</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgExpr"><span class="hs-identifier">LlStgExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgRhs"><span class="hs-identifier">LlStgRhs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgAlt"><span class="hs-identifier">LlStgAlt</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-43"></span><span>
</span><span id="line-44"></span><span>        </span><span class="hs-comment">-- a set of synonyms to distinguish in- and out variants</span><span>
</span><span id="line-45"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#InStgArg"><span class="hs-identifier">InStgArg</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Stg.Syntax.html#InStgTopBinding"><span class="hs-identifier">InStgTopBinding</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Stg.Syntax.html#InStgBinding"><span class="hs-identifier">InStgBinding</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Stg.Syntax.html#InStgExpr"><span class="hs-identifier">InStgExpr</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Stg.Syntax.html#InStgRhs"><span class="hs-identifier">InStgRhs</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="GHC.Stg.Syntax.html#InStgAlt"><span class="hs-identifier">InStgAlt</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-46"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgArg"><span class="hs-identifier">OutStgArg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgTopBinding"><span class="hs-identifier">OutStgTopBinding</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgBinding"><span class="hs-identifier">OutStgBinding</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgExpr"><span class="hs-identifier">OutStgExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgRhs"><span class="hs-identifier">OutStgRhs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgAlt"><span class="hs-identifier">OutStgAlt</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-47"></span><span>
</span><span id="line-48"></span><span>        </span><span class="hs-comment">-- StgOp</span><span>
</span><span id="line-49"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgOp"><span class="hs-identifier">StgOp</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-50"></span><span>
</span><span id="line-51"></span><span>        </span><span class="hs-comment">-- utils</span><span>
</span><span id="line-52"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#stgRhsArity"><span class="hs-identifier">stgRhsArity</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-53"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#isDllConApp"><span class="hs-identifier">isDllConApp</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-54"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#stgArgType"><span class="hs-identifier">stgArgType</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-55"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#stripStgTicksTop"><span class="hs-identifier">stripStgTicksTop</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#stripStgTicksTopE"><span class="hs-identifier">stripStgTicksTopE</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-56"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#stgCaseBndrInScope"><span class="hs-identifier">stgCaseBndrInScope</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-57"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#bindersOf"><span class="hs-identifier">bindersOf</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#bindersOfTop"><span class="hs-identifier">bindersOfTop</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#bindersOfTopBinds"><span class="hs-identifier">bindersOfTopBinds</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-58"></span><span>
</span><span id="line-59"></span><span>        </span><span class="hs-comment">-- ppr</span><span>
</span><span id="line-60"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier">StgPprOpts</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#initStgPprOpts"><span class="hs-identifier">initStgPprOpts</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#panicStgPprOpts"><span class="hs-identifier">panicStgPprOpts</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-61"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgArg"><span class="hs-identifier">pprStgArg</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier">pprStgExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgRhs"><span class="hs-identifier">pprStgRhs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgBinding"><span class="hs-identifier">pprStgBinding</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-62"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#pprGenStgTopBinding"><span class="hs-identifier">pprGenStgTopBinding</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgTopBinding"><span class="hs-identifier">pprStgTopBinding</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-63"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#pprGenStgTopBindings"><span class="hs-identifier">pprGenStgTopBindings</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgTopBindings"><span class="hs-identifier">pprStgTopBindings</span></a></span><span>
</span><span id="line-64"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-68"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-69"></span><span>
</span><span id="line-70"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.html"><span class="hs-identifier">GHC.Core</span></a></span><span>     </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.html#AltCon"><span class="hs-identifier">AltCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier">Tickish</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-71"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.CostCentre.html"><span class="hs-identifier">GHC.Types.CostCentre</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.CostCentre.html#CostCentreStack"><span class="hs-identifier">CostCentreStack</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-72"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.html#"><span class="hs-identifier">Data.ByteString</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Internal.html#ByteString"><span class="hs-identifier">ByteString</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-73"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Data.html#"><span class="hs-identifier">Data.Data</span></a></span><span>   </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../base/src/Data.Data.html#Data"><span class="hs-identifier">Data</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-74"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.List.html#"><span class="hs-identifier">Data.List</span></a></span><span>   </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../base/src/Data.OldList.html#intersperse"><span class="hs-identifier">intersperse</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-75"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html"><span class="hs-identifier">GHC.Core.DataCon</span></a></span><span>
</span><span id="line-76"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html"><span class="hs-identifier">GHC.Driver.Session</span></a></span><span>
</span><span id="line-77"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html"><span class="hs-identifier">GHC.Types.ForeignCall</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html#ForeignCall"><span class="hs-identifier">ForeignCall</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-78"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Id.html"><span class="hs-identifier">GHC.Types.Id</span></a></span><span>
</span><span id="line-79"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>        </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#isDynLinkName"><span class="hs-identifier">isDynLinkName</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-80"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html"><span class="hs-identifier">GHC.Types.Var.Set</span></a></span><span>
</span><span id="line-81"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Literal.html"><span class="hs-identifier">GHC.Types.Literal</span></a></span><span>     </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Literal.html#Literal"><span class="hs-identifier">Literal</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Types.Literal.html#literalType"><span class="hs-identifier">literalType</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-82"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Unit.Module.html"><span class="hs-identifier">GHC.Unit.Module</span></a></span><span>       </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier">Module</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-83"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-84"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#"><span class="hs-identifier">GHC.Platform</span></a></span><span>
</span><span id="line-85"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Ppr.html"><span class="hs-identifier">GHC.Core.Ppr</span></a></span><span class="hs-special">(</span><span> </span><span class="hs-comment">{- instances -}</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-86"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Builtin.PrimOps.html"><span class="hs-identifier">GHC.Builtin.PrimOps</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Builtin.PrimOps.html#PrimOp"><span class="hs-identifier">PrimOp</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.PrimOps.html#PrimCall"><span class="hs-identifier">PrimCall</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-87"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html"><span class="hs-identifier">GHC.Core.TyCon</span></a></span><span>    </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimRep"><span class="hs-identifier">PrimRep</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier">TyCon</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-88"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Type.html"><span class="hs-identifier">GHC.Core.Type</span></a></span><span>     </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier">Type</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-89"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html"><span class="hs-identifier">GHC.Types.RepType</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.RepType.html#typePrimRep1"><span class="hs-identifier">typePrimRep1</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-90"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Misc.html"><span class="hs-identifier">GHC.Utils.Misc</span></a></span><span>
</span><span id="line-91"></span><span>
</span><span id="line-92"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.List.NonEmpty.html#"><span class="hs-identifier">Data.List.NonEmpty</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#NonEmpty"><span class="hs-identifier">NonEmpty</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/Data.List.NonEmpty.html#toList"><span class="hs-identifier">toList</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-93"></span><span>
</span><span id="line-94"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
GenStgBinding
*                                                                      *
************************************************************************

As usual, expressions are interesting; other things are boring. Here are the
boring things (except note the @GenStgRhs@), parameterised with respect to
binder and occurrence information (just as in @GHC.Core@):
-}</span><span>
</span><span id="line-105"></span><span>
</span><span id="line-106"></span><span class="hs-comment">-- | A top-level binding.</span><span>
</span><span id="line-107"></span><span class="hs-keyword">data</span><span> </span><span id="GenStgTopBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgTopBinding"><span class="hs-identifier hs-var">GenStgTopBinding</span></a></span></span><span> </span><span id="local-6989586621680932568"><span class="annot"><a href="#local-6989586621680932568"><span class="hs-identifier hs-type">pass</span></a></span></span><span>
</span><span id="line-108"></span><span class="hs-comment">-- See Note [Core top-level string literals]</span><span>
</span><span id="line-109"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="StgTopLifted"><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopLifted"><span class="hs-identifier hs-var">StgTopLifted</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier hs-type">GenStgBinding</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932568"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-110"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgTopStringLit"><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopStringLit"><span class="hs-identifier hs-var">StgTopStringLit</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Internal.html#ByteString"><span class="hs-identifier hs-type">ByteString</span></a></span><span>
</span><span id="line-111"></span><span>
</span><span id="line-112"></span><span class="hs-keyword">data</span><span> </span><span id="GenStgBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier hs-var">GenStgBinding</span></a></span></span><span> </span><span id="local-6989586621680932565"><span class="annot"><a href="#local-6989586621680932565"><span class="hs-identifier hs-type">pass</span></a></span></span><span>
</span><span id="line-113"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="StgNonRec"><span class="annot"><a href="GHC.Stg.Syntax.html#StgNonRec"><span class="hs-identifier hs-var">StgNonRec</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932565"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgRhs"><span class="hs-identifier hs-type">GenStgRhs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932565"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-114"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgRec"><span class="annot"><a href="GHC.Stg.Syntax.html#StgRec"><span class="hs-identifier hs-var">StgRec</span></a></span></span><span>    </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932565"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgRhs"><span class="hs-identifier hs-type">GenStgRhs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932565"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-115"></span><span>
</span><span id="line-116"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
StgArg
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-123"></span><span>
</span><span id="line-124"></span><span class="hs-keyword">data</span><span> </span><span id="StgArg"><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-var">StgArg</span></a></span></span><span>
</span><span id="line-125"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="StgVarArg"><span class="annot"><a href="GHC.Stg.Syntax.html#StgVarArg"><span class="hs-identifier hs-var">StgVarArg</span></a></span></span><span>  </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-126"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgLitArg"><span class="annot"><a href="GHC.Stg.Syntax.html#StgLitArg"><span class="hs-identifier hs-var">StgLitArg</span></a></span></span><span>  </span><span class="annot"><a href="GHC.Types.Literal.html#Literal"><span class="hs-identifier hs-type">Literal</span></a></span><span>
</span><span id="line-127"></span><span>
</span><span id="line-128"></span><span class="hs-comment">-- | Does this constructor application refer to anything in a different</span><span>
</span><span id="line-129"></span><span class="hs-comment">-- *Windows* DLL?</span><span>
</span><span id="line-130"></span><span class="hs-comment">-- If so, we can't allocate it statically</span><span>
</span><span id="line-131"></span><span class="annot"><a href="GHC.Stg.Syntax.html#isDllConApp"><span class="hs-identifier hs-type">isDllConApp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-132"></span><span id="isDllConApp"><span class="annot"><span class="annottext">isDllConApp :: DynFlags -&gt; Module -&gt; DataCon -&gt; [StgArg] -&gt; Bool
</span><a href="GHC.Stg.Syntax.html#isDllConApp"><span class="hs-identifier hs-var hs-var">isDllConApp</span></a></span></span><span> </span><span id="local-6989586621680932560"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680932560"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621680932559"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680932559"><span class="hs-identifier hs-var">this_mod</span></a></span></span><span> </span><span id="local-6989586621680932558"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680932558"><span class="hs-identifier hs-var">con</span></a></span></span><span> </span><span id="local-6989586621680932557"><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932557"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-133"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">GeneralFlag -&gt; DynFlags -&gt; Bool
</span><a href="GHC.Driver.Session.html#gopt"><span class="hs-identifier hs-var">gopt</span></a></span><span> </span><span class="annot"><span class="annottext">GeneralFlag
</span><a href="GHC.Driver.Flags.html#Opt_ExternalDynamicRefs"><span class="hs-identifier hs-var">Opt_ExternalDynamicRefs</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680932560"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-134"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; OS
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformOS"><span class="hs-identifier hs-var">platformOS</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680932552"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">OS -&gt; OS -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">OS
</span><a href="../../ghc-boot/src/GHC.Platform.html#OSMinGW32"><span class="hs-identifier hs-var">OSMinGW32</span></a></span><span>
</span><span id="line-135"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Module -&gt; Name -&gt; Bool
</span><a href="GHC.Types.Name.html#isDynLinkName"><span class="hs-identifier hs-var">isDynLinkName</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680932552"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680932559"><span class="hs-identifier hs-var">this_mod</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; Name
</span><a href="GHC.Core.DataCon.html#dataConName"><span class="hs-identifier hs-var">dataConName</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680932558"><span class="hs-identifier hs-var">con</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">||</span></span><span> </span><span class="annot"><span class="annottext">(StgArg -&gt; Bool) -&gt; [StgArg] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; (a -&gt; Bool) -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#any"><span class="hs-identifier hs-var">any</span></a></span><span> </span><span class="annot"><span class="annottext">StgArg -&gt; Bool
</span><a href="#local-6989586621680932547"><span class="hs-identifier hs-var">is_dll_arg</span></a></span><span> </span><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932557"><span class="hs-identifier hs-var">args</span></a></span><span>
</span><span id="line-136"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-137"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-138"></span><span>    </span><span id="local-6989586621680932552"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621680932552"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680932560"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-139"></span><span>    </span><span class="hs-comment">-- NB: typePrimRep1 is legit because any free variables won't have</span><span>
</span><span id="line-140"></span><span>    </span><span class="hs-comment">-- unlifted type (there are no unlifted things at top level)</span><span>
</span><span id="line-141"></span><span>    </span><span class="annot"><a href="#local-6989586621680932547"><span class="hs-identifier hs-type">is_dll_arg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-142"></span><span>    </span><span id="local-6989586621680932547"><span class="annot"><span class="annottext">is_dll_arg :: StgArg -&gt; Bool
</span><a href="#local-6989586621680932547"><span class="hs-identifier hs-var hs-var">is_dll_arg</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgVarArg"><span class="hs-identifier hs-type">StgVarArg</span></a></span><span> </span><span id="local-6989586621680932545"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932545"><span class="hs-identifier hs-var">v</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>  </span><span class="annot"><span class="annottext">PrimRep -&gt; Bool
</span><a href="GHC.Stg.Syntax.html#isAddrRep"><span class="hs-identifier hs-var">isAddrRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; UnaryType -&gt; PrimRep
UnaryType -&gt; PrimRep
</span><a href="GHC.Types.RepType.html#typePrimRep1"><span class="hs-identifier hs-var">typePrimRep1</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; UnaryType
</span><a href="GHC.Types.Id.html#idType"><span class="hs-identifier hs-var">idType</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932545"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-143"></span><span>                             </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Module -&gt; Name -&gt; Bool
</span><a href="GHC.Types.Name.html#isDynLinkName"><span class="hs-identifier hs-var">isDynLinkName</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621680932552"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680932559"><span class="hs-identifier hs-var">this_mod</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Name
</span><a href="GHC.Types.Id.html#idName"><span class="hs-identifier hs-var">idName</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932545"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-144"></span><span>    </span><span class="annot"><a href="#local-6989586621680932547"><span class="hs-identifier hs-var">is_dll_arg</span></a></span><span> </span><span class="annot"><span class="annottext">StgArg
</span><span class="hs-identifier">_</span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-145"></span><span>
</span><span id="line-146"></span><span class="hs-comment">-- True of machine addresses; these are the things that don't work across DLLs.</span><span>
</span><span id="line-147"></span><span class="hs-comment">-- The key point here is that VoidRep comes out False, so that a top level</span><span>
</span><span id="line-148"></span><span class="hs-comment">-- nullary GADT constructor is False for isDllConApp</span><span>
</span><span id="line-149"></span><span class="hs-comment">--</span><span>
</span><span id="line-150"></span><span class="hs-comment">--    data T a where</span><span>
</span><span id="line-151"></span><span class="hs-comment">--      T1 :: T Int</span><span>
</span><span id="line-152"></span><span class="hs-comment">--</span><span>
</span><span id="line-153"></span><span class="hs-comment">-- gives</span><span>
</span><span id="line-154"></span><span class="hs-comment">--</span><span>
</span><span id="line-155"></span><span class="hs-comment">--    T1 :: forall a. (a~Int) -&gt; T a</span><span>
</span><span id="line-156"></span><span class="hs-comment">--</span><span>
</span><span id="line-157"></span><span class="hs-comment">-- and hence the top-level binding</span><span>
</span><span id="line-158"></span><span class="hs-comment">--</span><span>
</span><span id="line-159"></span><span class="hs-comment">--    $WT1 :: T Int</span><span>
</span><span id="line-160"></span><span class="hs-comment">--    $WT1 = T1 Int (Coercion (Refl Int))</span><span>
</span><span id="line-161"></span><span class="hs-comment">--</span><span>
</span><span id="line-162"></span><span class="hs-comment">-- The coercion argument here gets VoidRep</span><span>
</span><span id="line-163"></span><span class="annot"><a href="GHC.Stg.Syntax.html#isAddrRep"><span class="hs-identifier hs-type">isAddrRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimRep"><span class="hs-identifier hs-type">PrimRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-164"></span><span id="isAddrRep"><span class="annot"><span class="annottext">isAddrRep :: PrimRep -&gt; Bool
</span><a href="GHC.Stg.Syntax.html#isAddrRep"><span class="hs-identifier hs-var hs-var">isAddrRep</span></a></span></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#AddrRep"><span class="hs-identifier hs-var">AddrRep</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-165"></span><span class="annot"><a href="GHC.Stg.Syntax.html#isAddrRep"><span class="hs-identifier hs-var">isAddrRep</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#LiftedRep"><span class="hs-identifier hs-var">LiftedRep</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-166"></span><span class="annot"><a href="GHC.Stg.Syntax.html#isAddrRep"><span class="hs-identifier hs-var">isAddrRep</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="GHC.Core.TyCon.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-167"></span><span class="annot"><a href="GHC.Stg.Syntax.html#isAddrRep"><span class="hs-identifier hs-var">isAddrRep</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><span class="hs-identifier">_</span></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-168"></span><span>
</span><span id="line-169"></span><span class="hs-comment">-- | Type of an @StgArg@</span><span>
</span><span id="line-170"></span><span class="hs-comment">--</span><span>
</span><span id="line-171"></span><span class="hs-comment">-- Very half baked because we have lost the type arguments.</span><span>
</span><span id="line-172"></span><span class="annot"><a href="GHC.Stg.Syntax.html#stgArgType"><span class="hs-identifier hs-type">stgArgType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-173"></span><span id="stgArgType"><span class="annot"><span class="annottext">stgArgType :: StgArg -&gt; UnaryType
</span><a href="GHC.Stg.Syntax.html#stgArgType"><span class="hs-identifier hs-var hs-var">stgArgType</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgVarArg"><span class="hs-identifier hs-type">StgVarArg</span></a></span><span> </span><span id="local-6989586621680932537"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932537"><span class="hs-identifier hs-var">v</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Id -&gt; UnaryType
</span><a href="GHC.Types.Id.html#idType"><span class="hs-identifier hs-var">idType</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932537"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-174"></span><span class="annot"><a href="GHC.Stg.Syntax.html#stgArgType"><span class="hs-identifier hs-var">stgArgType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgLitArg"><span class="hs-identifier hs-type">StgLitArg</span></a></span><span> </span><span id="local-6989586621680932536"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680932536"><span class="hs-identifier hs-var">lit</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Literal -&gt; UnaryType
</span><a href="GHC.Types.Literal.html#literalType"><span class="hs-identifier hs-var">literalType</span></a></span><span> </span><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680932536"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-175"></span><span>
</span><span id="line-176"></span><span>
</span><span id="line-177"></span><span class="hs-comment">-- | Strip ticks of a given type from an STG expression.</span><span>
</span><span id="line-178"></span><span id="local-6989586621680932784"><span class="annot"><a href="GHC.Stg.Syntax.html#stripStgTicksTop"><span class="hs-identifier hs-type">stripStgTicksTop</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932784"><span class="hs-identifier hs-type">p</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932784"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-179"></span><span id="stripStgTicksTop"><span class="annot"><span class="annottext">stripStgTicksTop :: forall (p :: StgPass).
(Tickish Id -&gt; Bool)
-&gt; GenStgExpr p -&gt; ([Tickish Id], GenStgExpr p)
</span><a href="GHC.Stg.Syntax.html#stripStgTicksTop"><span class="hs-identifier hs-var hs-var">stripStgTicksTop</span></a></span></span><span> </span><span id="local-6989586621680932535"><span class="annot"><span class="annottext">Tickish Id -&gt; Bool
</span><a href="#local-6989586621680932535"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Tickish Id] -&gt; GenStgExpr p -&gt; ([Tickish Id], GenStgExpr p)
</span><a href="#local-6989586621680932534"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-180"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621680932534"><span class="annot"><span class="annottext">go :: [Tickish Id] -&gt; GenStgExpr p -&gt; ([Tickish Id], GenStgExpr p)
</span><a href="#local-6989586621680932534"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span id="local-6989586621680932533"><span class="annot"><span class="annottext">[Tickish Id]
</span><a href="#local-6989586621680932533"><span class="hs-identifier hs-var">ts</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTick"><span class="hs-identifier hs-type">StgTick</span></a></span><span> </span><span id="local-6989586621680932531"><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680932531"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621680932530"><span class="annot"><span class="annottext">GenStgExpr p
</span><a href="#local-6989586621680932530"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Tickish Id -&gt; Bool
</span><a href="#local-6989586621680932535"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680932531"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Tickish Id] -&gt; GenStgExpr p -&gt; ([Tickish Id], GenStgExpr p)
</span><a href="#local-6989586621680932534"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680932531"><span class="hs-identifier hs-var">t</span></a></span><span class="annot"><span class="annottext">Tickish Id -&gt; [Tickish Id] -&gt; [Tickish Id]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span class="annot"><span class="annottext">[Tickish Id]
</span><a href="#local-6989586621680932533"><span class="hs-identifier hs-var">ts</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">GenStgExpr p
</span><a href="#local-6989586621680932530"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-181"></span><span>         </span><span class="annot"><a href="#local-6989586621680932534"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621680932529"><span class="annot"><span class="annottext">[Tickish Id]
</span><a href="#local-6989586621680932529"><span class="hs-identifier hs-var">ts</span></a></span></span><span> </span><span id="local-6989586621680932528"><span class="annot"><span class="annottext">GenStgExpr p
</span><a href="#local-6989586621680932528"><span class="hs-identifier hs-var">other</span></a></span></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Tickish Id] -&gt; [Tickish Id]
forall a. [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#reverse"><span class="hs-identifier hs-var">reverse</span></a></span><span> </span><span class="annot"><span class="annottext">[Tickish Id]
</span><a href="#local-6989586621680932529"><span class="hs-identifier hs-var">ts</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">GenStgExpr p
</span><a href="#local-6989586621680932528"><span class="hs-identifier hs-var">other</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-182"></span><span>
</span><span id="line-183"></span><span class="hs-comment">-- | Strip ticks of a given type from an STG expression returning only the expression.</span><span>
</span><span id="line-184"></span><span id="local-6989586621680932779"><span class="annot"><a href="GHC.Stg.Syntax.html#stripStgTicksTopE"><span class="hs-identifier hs-type">stripStgTicksTopE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932779"><span class="hs-identifier hs-type">p</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932779"><span class="hs-identifier hs-type">p</span></a></span></span><span>
</span><span id="line-185"></span><span id="stripStgTicksTopE"><span class="annot"><span class="annottext">stripStgTicksTopE :: forall (p :: StgPass).
(Tickish Id -&gt; Bool) -&gt; GenStgExpr p -&gt; GenStgExpr p
</span><a href="GHC.Stg.Syntax.html#stripStgTicksTopE"><span class="hs-identifier hs-var hs-var">stripStgTicksTopE</span></a></span></span><span> </span><span id="local-6989586621680932526"><span class="annot"><span class="annottext">Tickish Id -&gt; Bool
</span><a href="#local-6989586621680932526"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GenStgExpr p -&gt; GenStgExpr p
</span><a href="#local-6989586621680932525"><span class="hs-identifier hs-var">go</span></a></span><span>
</span><span id="line-186"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621680932525"><span class="annot"><span class="annottext">go :: GenStgExpr p -&gt; GenStgExpr p
</span><a href="#local-6989586621680932525"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTick"><span class="hs-identifier hs-type">StgTick</span></a></span><span> </span><span id="local-6989586621680932524"><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680932524"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621680932523"><span class="annot"><span class="annottext">GenStgExpr p
</span><a href="#local-6989586621680932523"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Tickish Id -&gt; Bool
</span><a href="#local-6989586621680932526"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680932524"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GenStgExpr p -&gt; GenStgExpr p
</span><a href="#local-6989586621680932525"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr p
</span><a href="#local-6989586621680932523"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-187"></span><span>         </span><span class="annot"><a href="#local-6989586621680932525"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621680932522"><span class="annot"><span class="annottext">GenStgExpr p
</span><a href="#local-6989586621680932522"><span class="hs-identifier hs-var">other</span></a></span></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GenStgExpr p
</span><a href="#local-6989586621680932522"><span class="hs-identifier hs-var">other</span></a></span><span>
</span><span id="line-188"></span><span>
</span><span id="line-189"></span><span class="hs-comment">-- | Given an alt type and whether the program is unarised, return whether the</span><span>
</span><span id="line-190"></span><span class="hs-comment">-- case binder is in scope.</span><span>
</span><span id="line-191"></span><span class="hs-comment">--</span><span>
</span><span id="line-192"></span><span class="hs-comment">-- Case binders of unboxed tuple or unboxed sum type always dead after the</span><span>
</span><span id="line-193"></span><span class="hs-comment">-- unariser has run. See Note [Post-unarisation invariants].</span><span>
</span><span id="line-194"></span><span class="annot"><a href="GHC.Stg.Syntax.html#stgCaseBndrInScope"><span class="hs-identifier hs-type">stgCaseBndrInScope</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#AltType"><span class="hs-identifier hs-type">AltType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-comment">{- ^ unarised? -}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-195"></span><span id="stgCaseBndrInScope"><span class="annot"><span class="annottext">stgCaseBndrInScope :: AltType -&gt; Bool -&gt; Bool
</span><a href="GHC.Stg.Syntax.html#stgCaseBndrInScope"><span class="hs-identifier hs-var hs-var">stgCaseBndrInScope</span></a></span></span><span> </span><span id="local-6989586621680932521"><span class="annot"><span class="annottext">AltType
</span><a href="#local-6989586621680932521"><span class="hs-identifier hs-var">alt_ty</span></a></span></span><span> </span><span id="local-6989586621680932520"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680932520"><span class="hs-identifier hs-var">unarised</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-196"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">AltType
</span><a href="#local-6989586621680932521"><span class="hs-identifier hs-var">alt_ty</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-197"></span><span>      </span><span class="annot"><a href="GHC.Stg.Syntax.html#AlgAlt"><span class="hs-identifier hs-type">AlgAlt</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-198"></span><span>      </span><span class="annot"><a href="GHC.Stg.Syntax.html#PrimAlt"><span class="hs-identifier hs-type">PrimAlt</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-199"></span><span>      </span><span class="annot"><a href="GHC.Stg.Syntax.html#MultiValAlt"><span class="hs-identifier hs-type">MultiValAlt</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680932520"><span class="hs-identifier hs-var">unarised</span></a></span><span>
</span><span id="line-200"></span><span>      </span><span class="annot"><span class="annottext">AltType
</span><a href="GHC.Stg.Syntax.html#PolyAlt"><span class="hs-identifier hs-var">PolyAlt</span></a></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-201"></span><span>
</span><span id="line-202"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
STG expressions
*                                                                      *
************************************************************************

The @GenStgExpr@ data type is parameterised on binder and occurrence info, as
before.

************************************************************************
*                                                                      *
GenStgExpr
*                                                                      *
************************************************************************

An application is of a function to a list of atoms (not expressions).
Operationally, we want to push the arguments on the stack and call the function.
(If the arguments were expressions, we would have to build their closures
first.)

There is no constructor for a lone variable; it would appear as @StgApp var []@.
-}</span><span>
</span><span id="line-225"></span><span>
</span><span id="line-226"></span><span class="hs-keyword">data</span><span> </span><span id="GenStgExpr"><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-var">GenStgExpr</span></a></span></span><span> </span><span id="local-6989586621680932515"><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span></span><span>
</span><span id="line-227"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="StgApp"><span class="annot"><a href="GHC.Stg.Syntax.html#StgApp"><span class="hs-identifier hs-var">StgApp</span></a></span></span><span>
</span><span id="line-228"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>       </span><span class="hs-comment">-- function</span><span>
</span><span id="line-229"></span><span>        </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-comment">-- arguments; may be empty</span><span>
</span><span id="line-230"></span><span>
</span><span id="line-231"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
StgConApp and StgPrimApp --- saturated applications
*                                                                      *
************************************************************************

There are specialised forms of application, for constructors, primitives, and
literals.
-}</span><span>
</span><span id="line-241"></span><span>
</span><span id="line-242"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgLit"><span class="annot"><a href="GHC.Stg.Syntax.html#StgLit"><span class="hs-identifier hs-var">StgLit</span></a></span></span><span>      </span><span class="annot"><a href="GHC.Types.Literal.html#Literal"><span class="hs-identifier hs-type">Literal</span></a></span><span>
</span><span id="line-243"></span><span>
</span><span id="line-244"></span><span>        </span><span class="hs-comment">-- StgConApp is vital for returning unboxed tuples or sums</span><span>
</span><span id="line-245"></span><span>        </span><span class="hs-comment">-- which can't be let-bound</span><span>
</span><span id="line-246"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgConApp"><span class="annot"><a href="GHC.Stg.Syntax.html#StgConApp"><span class="hs-identifier hs-var">StgConApp</span></a></span></span><span>   </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>
</span><span id="line-247"></span><span>                </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-comment">-- Saturated</span><span>
</span><span id="line-248"></span><span>                </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span>   </span><span class="hs-comment">-- See Note [Types in StgConApp] in GHC.Stg.Unarise</span><span>
</span><span id="line-249"></span><span>
</span><span id="line-250"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgOpApp"><span class="annot"><a href="GHC.Stg.Syntax.html#StgOpApp"><span class="hs-identifier hs-var">StgOpApp</span></a></span></span><span>    </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgOp"><span class="hs-identifier hs-type">StgOp</span></a></span><span>    </span><span class="hs-comment">-- Primitive op or foreign call</span><span>
</span><span id="line-251"></span><span>                </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-comment">-- Saturated.</span><span>
</span><span id="line-252"></span><span>                </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>     </span><span class="hs-comment">-- Result type</span><span>
</span><span id="line-253"></span><span>                         </span><span class="hs-comment">-- We need to know this so that we can</span><span>
</span><span id="line-254"></span><span>                         </span><span class="hs-comment">-- assign result registers</span><span>
</span><span id="line-255"></span><span>
</span><span id="line-256"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
StgLam
*                                                                      *
************************************************************************

StgLam is used *only* during CoreToStg's work. Before CoreToStg has finished it
encodes (\x -&gt; e) as (let f = \x -&gt; e in f) TODO: Encode this via an extension
to GenStgExpr &#224; la TTG.
-}</span><span>
</span><span id="line-267"></span><span>
</span><span id="line-268"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgLam"><span class="annot"><a href="GHC.Stg.Syntax.html#StgLam"><span class="hs-identifier hs-var">StgLam</span></a></span></span><span>
</span><span id="line-269"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Base.html#NonEmpty"><span class="hs-identifier hs-type">NonEmpty</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-270"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgExpr"><span class="hs-identifier hs-type">StgExpr</span></a></span><span>    </span><span class="hs-comment">-- Body of lambda</span><span>
</span><span id="line-271"></span><span>
</span><span id="line-272"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
GenStgExpr: case-expressions
*                                                                      *
************************************************************************

This has the same boxed/unboxed business as Core case expressions.
-}</span><span>
</span><span id="line-281"></span><span>
</span><span id="line-282"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgCase"><span class="annot"><a href="GHC.Stg.Syntax.html#StgCase"><span class="hs-identifier hs-var">StgCase</span></a></span></span><span>
</span><span id="line-283"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- the thing to examine</span><span>
</span><span id="line-284"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- binds the result of evaluating the scrutinee</span><span>
</span><span id="line-285"></span><span>        </span><span class="annot"><a href="GHC.Stg.Syntax.html#AltType"><span class="hs-identifier hs-type">AltType</span></a></span><span>
</span><span id="line-286"></span><span>        </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgAlt"><span class="hs-identifier hs-type">GenStgAlt</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-287"></span><span>                    </span><span class="hs-comment">-- The DEFAULT case is always *first*</span><span>
</span><span id="line-288"></span><span>                    </span><span class="hs-comment">-- if it is there at all</span><span>
</span><span id="line-289"></span><span>
</span><span id="line-290"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
GenStgExpr: let(rec)-expressions
*                                                                      *
************************************************************************

The various forms of let(rec)-expression encode most of the interesting things
we want to do.

-   let-closure x = [free-vars] [args] expr in e

  is equivalent to

    let x = (\free-vars -&gt; \args -&gt; expr) free-vars

  @args@ may be empty (and is for most closures). It isn't under circumstances
  like this:

    let x = (\y -&gt; y+z)

  This gets mangled to

    let-closure x = [z] [y] (y+z)

  The idea is that we compile code for @(y+z)@ in an environment in which @z@ is
  bound to an offset from Node, and `y` is bound to an offset from the stack
  pointer.

  (A let-closure is an @StgLet@ with a @StgRhsClosure@ RHS.)

-   let-constructor x = Constructor [args] in e

  (A let-constructor is an @StgLet@ with a @StgRhsCon@ RHS.)

- Letrec-expressions are essentially the same deal as let-closure/
  let-constructor, so we use a common structure and distinguish between them
  with an @is_recursive@ boolean flag.

-   let-unboxed u = &lt;an arbitrary arithmetic expression in unboxed values&gt; in e

  All the stuff on the RHS must be fully evaluated. No function calls either!

  (We've backed away from this toward case-expressions with suitably-magical
  alts ...)

- Advanced stuff here! Not to start with, but makes pattern matching generate
  more efficient code.

    let-escapes-not fail = expr
    in e'

  Here the idea is that @e'@ guarantees not to put @fail@ in a data structure,
  or pass it to another function. All @e'@ will ever do is tail-call @fail@.
  Rather than build a closure for @fail@, all we need do is to record the stack
  level at the moment of the @let-escapes-not@; then entering @fail@ is just a
  matter of adjusting the stack pointer back down to that point and entering the
  code for it.

  Another example:

    f x y = let z = huge-expression in
            if y==1 then z else
            if y==2 then z else
            1

  (A let-escapes-not is an @StgLetNoEscape@.)

- We may eventually want:

    let-literal x = Literal in e

And so the code for let(rec)-things:
-}</span><span>
</span><span id="line-364"></span><span>
</span><span id="line-365"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgLet"><span class="annot"><a href="GHC.Stg.Syntax.html#StgLet"><span class="hs-identifier hs-var">StgLet</span></a></span></span><span>
</span><span id="line-366"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#XLet"><span class="hs-identifier hs-type">XLet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-367"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier hs-type">GenStgBinding</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>    </span><span class="hs-comment">-- right hand sides (see below)</span><span>
</span><span id="line-368"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>       </span><span class="hs-comment">-- body</span><span>
</span><span id="line-369"></span><span>
</span><span id="line-370"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgLetNoEscape"><span class="annot"><a href="GHC.Stg.Syntax.html#StgLetNoEscape"><span class="hs-identifier hs-var">StgLetNoEscape</span></a></span></span><span>
</span><span id="line-371"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#XLetNoEscape"><span class="hs-identifier hs-type">XLetNoEscape</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-372"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier hs-type">GenStgBinding</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>    </span><span class="hs-comment">-- right hand sides (see below)</span><span>
</span><span id="line-373"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>       </span><span class="hs-comment">-- body</span><span>
</span><span id="line-374"></span><span>
</span><span id="line-375"></span><span class="hs-comment">{-
*************************************************************************
*                                                                      *
GenStgExpr: hpc, scc and other debug annotations
*                                                                      *
*************************************************************************

Finally for @hpc@ expressions we introduce a new STG construct.
-}</span><span>
</span><span id="line-384"></span><span>
</span><span id="line-385"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgTick"><span class="annot"><a href="GHC.Stg.Syntax.html#StgTick"><span class="hs-identifier hs-var">StgTick</span></a></span></span><span>
</span><span id="line-386"></span><span>    </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-387"></span><span>    </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932515"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>       </span><span class="hs-comment">-- sub expression</span><span>
</span><span id="line-388"></span><span>
</span><span id="line-389"></span><span class="hs-comment">-- END of GenStgExpr</span><span>
</span><span id="line-390"></span><span>
</span><span id="line-391"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
STG right-hand sides
*                                                                      *
************************************************************************

Here's the rest of the interesting stuff for @StgLet@s; the first flavour is for
closures:
-}</span><span>
</span><span id="line-401"></span><span>
</span><span id="line-402"></span><span class="hs-keyword">data</span><span> </span><span id="GenStgRhs"><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgRhs"><span class="hs-identifier hs-var">GenStgRhs</span></a></span></span><span> </span><span id="local-6989586621680932506"><span class="annot"><a href="#local-6989586621680932506"><span class="hs-identifier hs-type">pass</span></a></span></span><span>
</span><span id="line-403"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="StgRhsClosure"><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhsClosure"><span class="hs-identifier hs-var">StgRhsClosure</span></a></span></span><span>
</span><span id="line-404"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#XRhsClosure"><span class="hs-identifier hs-type">XRhsClosure</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932506"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ^ Extension point for non-global free var</span><span>
</span><span id="line-405"></span><span>                           </span><span class="hs-comment">--   list just before 'CodeGen'.</span><span>
</span><span id="line-406"></span><span>        </span><span class="annot"><a href="GHC.Types.CostCentre.html#CostCentreStack"><span class="hs-identifier hs-type">CostCentreStack</span></a></span><span>    </span><span class="hs-comment">-- ^ CCS to be attached (default is CurrentCCS)</span><span>
</span><span id="line-407"></span><span>        </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Stg.Syntax.html#UpdateFlag"><span class="hs-identifier hs-type">UpdateFlag</span></a></span><span>        </span><span class="hs-comment">-- ^ 'ReEntrant' | 'Updatable' | 'SingleEntry'</span><span>
</span><span id="line-408"></span><span>        </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932506"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">]</span><span>     </span><span class="hs-comment">-- ^ arguments; if empty, then not a function;</span><span>
</span><span id="line-409"></span><span>                           </span><span class="hs-comment">--   as above, order is important.</span><span>
</span><span id="line-410"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932506"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>  </span><span class="hs-comment">-- ^ body</span><span>
</span><span id="line-411"></span><span>
</span><span id="line-412"></span><span class="hs-comment">{-
An example may be in order.  Consider:

  let t = \x -&gt; \y -&gt; ... x ... y ... p ... q in e

Pulling out the free vars and stylising somewhat, we get the equivalent:

  let t = (\[p,q] -&gt; \[x,y] -&gt; ... x ... y ... p ...q) p q

Stg-operationally, the @[x,y]@ are on the stack, the @[p,q]@ are offsets from
@Node@ into the closure, and the code ptr for the closure will be exactly that
in parentheses above.

The second flavour of right-hand-side is for constructors (simple but
important):
-}</span><span>
</span><span id="line-428"></span><span>
</span><span id="line-429"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgRhsCon"><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhsCon"><span class="hs-identifier hs-var">StgRhsCon</span></a></span></span><span>
</span><span id="line-430"></span><span>        </span><span class="annot"><a href="GHC.Types.CostCentre.html#CostCentreStack"><span class="hs-identifier hs-type">CostCentreStack</span></a></span><span> </span><span class="hs-comment">-- CCS to be attached (default is CurrentCCS).</span><span>
</span><span id="line-431"></span><span>                        </span><span class="hs-comment">-- Top-level (static) ones will end up with</span><span>
</span><span id="line-432"></span><span>                        </span><span class="hs-comment">-- DontCareCCS, because we don't count static</span><span>
</span><span id="line-433"></span><span>                        </span><span class="hs-comment">-- data in heap profiles, and we don't set CCCS</span><span>
</span><span id="line-434"></span><span>                        </span><span class="hs-comment">-- from static closure.</span><span>
</span><span id="line-435"></span><span>        </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span>         </span><span class="hs-comment">-- Constructor. Never an unboxed tuple or sum, as those</span><span>
</span><span id="line-436"></span><span>                        </span><span class="hs-comment">-- are not allocated.</span><span>
</span><span id="line-437"></span><span>        </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span class="hs-special">]</span><span>        </span><span class="hs-comment">-- Args</span><span>
</span><span id="line-438"></span><span>
</span><span id="line-439"></span><span class="hs-comment">-- | Used as a data type index for the stgSyn AST</span><span>
</span><span id="line-440"></span><span class="hs-keyword">data</span><span> </span><span id="StgPass"><span class="annot"><a href="GHC.Stg.Syntax.html#StgPass"><span class="hs-identifier hs-var">StgPass</span></a></span></span><span>
</span><span id="line-441"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="Vanilla"><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-var">Vanilla</span></a></span></span><span>
</span><span id="line-442"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="LiftLams"><span class="annot"><a href="GHC.Stg.Syntax.html#LiftLams"><span class="hs-identifier hs-var">LiftLams</span></a></span></span><span>
</span><span id="line-443"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CodeGen"><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-var">CodeGen</span></a></span></span><span>
</span><span id="line-444"></span><span>
</span><span id="line-445"></span><span class="hs-comment">-- | Like 'GHC.Hs.Extension.NoExtField', but with an 'Outputable' instance that</span><span>
</span><span id="line-446"></span><span class="hs-comment">-- returns 'empty'.</span><span>
</span><span id="line-447"></span><span class="hs-keyword">data</span><span> </span><span id="NoExtFieldSilent"><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-var">NoExtFieldSilent</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="NoExtFieldSilent"><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-var">NoExtFieldSilent</span></a></span></span><span>
</span><span id="line-448"></span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680932471"><span id="local-6989586621680932473"><span id="local-6989586621680932475"><span id="local-6989586621680932477"><span id="local-6989586621680932479"><span id="local-6989586621680932481"><span id="local-6989586621680932483"><span id="local-6989586621680932485"><span id="local-6989586621680932487"><span id="local-6989586621680932489"><span id="local-6989586621680932491"><span id="local-6989586621680932493"><span id="local-6989586621680932495"><span id="local-6989586621680932497"><span class="annot"><span class="annottext">Typeable NoExtFieldSilent
Typeable NoExtFieldSilent
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; NoExtFieldSilent -&gt; c NoExtFieldSilent)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c NoExtFieldSilent)
-&gt; (NoExtFieldSilent -&gt; Constr)
-&gt; (NoExtFieldSilent -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c NoExtFieldSilent))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e))
    -&gt; Maybe (c NoExtFieldSilent))
-&gt; ((forall b. Data b =&gt; b -&gt; b)
    -&gt; NoExtFieldSilent -&gt; NoExtFieldSilent)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NoExtFieldSilent -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NoExtFieldSilent -&gt; r)
-&gt; (forall u.
    (forall d. Data d =&gt; d -&gt; u) -&gt; NoExtFieldSilent -&gt; [u])
-&gt; (forall u.
    Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; NoExtFieldSilent -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d)
    -&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d)
    -&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d)
    -&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent)
-&gt; Data NoExtFieldSilent
NoExtFieldSilent -&gt; DataType
NoExtFieldSilent -&gt; Constr
(forall b. Data b =&gt; b -&gt; b)
-&gt; NoExtFieldSilent -&gt; NoExtFieldSilent
forall a.
Typeable a
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; a -&gt; c a)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c a)
-&gt; (a -&gt; Constr)
-&gt; (a -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c a))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c a))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; a -&gt; a)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; [u])
-&gt; (forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; Data a
forall u.
Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; NoExtFieldSilent -&gt; u
forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; NoExtFieldSilent -&gt; [u]
forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NoExtFieldSilent -&gt; r
forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NoExtFieldSilent -&gt; r
forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent
forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent
forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c NoExtFieldSilent
forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; NoExtFieldSilent -&gt; c NoExtFieldSilent
forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c NoExtFieldSilent)
forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c NoExtFieldSilent)
gmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent
$cgmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent
gmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent
$cgmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent
gmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent
$cgmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; NoExtFieldSilent -&gt; m NoExtFieldSilent
gmapQi :: forall u.
Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; NoExtFieldSilent -&gt; u
$cgmapQi :: forall u.
Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; NoExtFieldSilent -&gt; u
gmapQ :: forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; NoExtFieldSilent -&gt; [u]
$cgmapQ :: forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; NoExtFieldSilent -&gt; [u]
gmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NoExtFieldSilent -&gt; r
$cgmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NoExtFieldSilent -&gt; r
gmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NoExtFieldSilent -&gt; r
$cgmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NoExtFieldSilent -&gt; r
gmapT :: (forall b. Data b =&gt; b -&gt; b)
-&gt; NoExtFieldSilent -&gt; NoExtFieldSilent
$cgmapT :: (forall b. Data b =&gt; b -&gt; b)
-&gt; NoExtFieldSilent -&gt; NoExtFieldSilent
dataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c NoExtFieldSilent)
$cdataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c NoExtFieldSilent)
dataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c NoExtFieldSilent)
$cdataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c NoExtFieldSilent)
dataTypeOf :: NoExtFieldSilent -&gt; DataType
$cdataTypeOf :: NoExtFieldSilent -&gt; DataType
toConstr :: NoExtFieldSilent -&gt; Constr
$ctoConstr :: NoExtFieldSilent -&gt; Constr
gunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c NoExtFieldSilent
$cgunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c NoExtFieldSilent
gfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; NoExtFieldSilent -&gt; c NoExtFieldSilent
$cgfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; NoExtFieldSilent -&gt; c NoExtFieldSilent
</span><a href="../../base/src/Data.Data.html#Data"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Data</span></a></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680932466"><span id="local-6989586621680932468"><span class="annot"><span class="annottext">NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
(NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool)
-&gt; (NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool)
-&gt; Eq NoExtFieldSilent
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
$c/= :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
== :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
$c== :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680932446"><span id="local-6989586621680932448"><span id="local-6989586621680932451"><span id="local-6989586621680932454"><span id="local-6989586621680932457"><span id="local-6989586621680932459"><span id="local-6989586621680932461"><span class="annot"><span class="annottext">Eq NoExtFieldSilent
Eq NoExtFieldSilent
-&gt; (NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Ordering)
-&gt; (NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool)
-&gt; (NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool)
-&gt; (NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool)
-&gt; (NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool)
-&gt; (NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; NoExtFieldSilent)
-&gt; (NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; NoExtFieldSilent)
-&gt; Ord NoExtFieldSilent
NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Ordering
NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; NoExtFieldSilent
forall a.
Eq a
-&gt; (a -&gt; a -&gt; Ordering)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; Bool)
-&gt; (a -&gt; a -&gt; a)
-&gt; (a -&gt; a -&gt; a)
-&gt; Ord a
min :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; NoExtFieldSilent
$cmin :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; NoExtFieldSilent
max :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; NoExtFieldSilent
$cmax :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; NoExtFieldSilent
&gt;= :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
$c&gt;= :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
&gt; :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
$c&gt; :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
&lt;= :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
$c&lt;= :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
&lt; :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
$c&lt; :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Bool
compare :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Ordering
$ccompare :: NoExtFieldSilent -&gt; NoExtFieldSilent -&gt; Ordering
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span class="hs-special">)</span><span>
</span><span id="line-449"></span><span>
</span><span id="line-450"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680932442"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-type">NoExtFieldSilent</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-451"></span><span>  </span><span id="local-6989586621680932440"><span class="annot"><span class="annottext">ppr :: NoExtFieldSilent -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="annot"><span class="annottext">NoExtFieldSilent
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-452"></span><span>
</span><span id="line-453"></span><span class="hs-comment">-- | Used when constructing a term with an unused extension point that should</span><span>
</span><span id="line-454"></span><span class="hs-comment">-- not appear in pretty-printed output at all.</span><span>
</span><span id="line-455"></span><span class="annot"><a href="GHC.Stg.Syntax.html#noExtFieldSilent"><span class="hs-identifier hs-type">noExtFieldSilent</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-type">NoExtFieldSilent</span></a></span><span>
</span><span id="line-456"></span><span id="noExtFieldSilent"><span class="annot"><span class="annottext">noExtFieldSilent :: NoExtFieldSilent
</span><a href="GHC.Stg.Syntax.html#noExtFieldSilent"><span class="hs-identifier hs-var hs-var">noExtFieldSilent</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NoExtFieldSilent
</span><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-var">NoExtFieldSilent</span></a></span><span>
</span><span id="line-457"></span><span class="hs-comment">-- TODO: Maybe move this to GHC.Hs.Extension? I'm not sure about the</span><span>
</span><span id="line-458"></span><span class="hs-comment">-- implications on build time...</span><span>
</span><span id="line-459"></span><span>
</span><span id="line-460"></span><span class="hs-comment">-- TODO: Do we really want to the extension point type families to have a closed</span><span>
</span><span id="line-461"></span><span class="hs-comment">-- domain?</span><span>
</span><span id="line-462"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">family</span><span> </span><span id="BinderP"><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-var">BinderP</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680932437"><span class="annot"><a href="#local-6989586621680932437"><span class="hs-identifier hs-type">pass</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPass"><span class="hs-identifier hs-type">StgPass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-463"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="BinderP"><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-var">BinderP</span></a></span></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-type">Vanilla</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-464"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="BinderP"><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-var">BinderP</span></a></span></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-type">CodeGen</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-465"></span><span>
</span><span id="line-466"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">family</span><span> </span><span id="XRhsClosure"><span class="annot"><a href="GHC.Stg.Syntax.html#XRhsClosure"><span class="hs-identifier hs-var">XRhsClosure</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680932436"><span class="annot"><a href="#local-6989586621680932436"><span class="hs-identifier hs-type">pass</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPass"><span class="hs-identifier hs-type">StgPass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-467"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XRhsClosure"><span class="annot"><a href="GHC.Stg.Syntax.html#XRhsClosure"><span class="hs-identifier hs-var">XRhsClosure</span></a></span></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-type">Vanilla</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-type">NoExtFieldSilent</span></a></span><span>
</span><span id="line-468"></span><span class="hs-comment">-- | Code gen needs to track non-global free vars</span><span>
</span><span id="line-469"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XRhsClosure"><span class="annot"><a href="GHC.Stg.Syntax.html#XRhsClosure"><span class="hs-identifier hs-var">XRhsClosure</span></a></span></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-type">CodeGen</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#DIdSet"><span class="hs-identifier hs-type">DIdSet</span></a></span><span>
</span><span id="line-470"></span><span>
</span><span id="line-471"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">family</span><span> </span><span id="XLet"><span class="annot"><a href="GHC.Stg.Syntax.html#XLet"><span class="hs-identifier hs-var">XLet</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680932434"><span class="annot"><a href="#local-6989586621680932434"><span class="hs-identifier hs-type">pass</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPass"><span class="hs-identifier hs-type">StgPass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-472"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XLet"><span class="annot"><a href="GHC.Stg.Syntax.html#XLet"><span class="hs-identifier hs-var">XLet</span></a></span></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-type">Vanilla</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-type">NoExtFieldSilent</span></a></span><span>
</span><span id="line-473"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XLet"><span class="annot"><a href="GHC.Stg.Syntax.html#XLet"><span class="hs-identifier hs-var">XLet</span></a></span></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-type">CodeGen</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-type">NoExtFieldSilent</span></a></span><span>
</span><span id="line-474"></span><span>
</span><span id="line-475"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">family</span><span> </span><span id="XLetNoEscape"><span class="annot"><a href="GHC.Stg.Syntax.html#XLetNoEscape"><span class="hs-identifier hs-var">XLetNoEscape</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680932433"><span class="annot"><a href="#local-6989586621680932433"><span class="hs-identifier hs-type">pass</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPass"><span class="hs-identifier hs-type">StgPass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-476"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XLetNoEscape"><span class="annot"><a href="GHC.Stg.Syntax.html#XLetNoEscape"><span class="hs-identifier hs-var">XLetNoEscape</span></a></span></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-type">Vanilla</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-type">NoExtFieldSilent</span></a></span><span>
</span><span id="line-477"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XLetNoEscape"><span class="annot"><a href="GHC.Stg.Syntax.html#XLetNoEscape"><span class="hs-identifier hs-var">XLetNoEscape</span></a></span></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-type">CodeGen</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#NoExtFieldSilent"><span class="hs-identifier hs-type">NoExtFieldSilent</span></a></span><span>
</span><span id="line-478"></span><span>
</span><span id="line-479"></span><span class="annot"><a href="GHC.Stg.Syntax.html#stgRhsArity"><span class="hs-identifier hs-type">stgRhsArity</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhs"><span class="hs-identifier hs-type">StgRhs</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-480"></span><span id="stgRhsArity"><span class="annot"><span class="annottext">stgRhsArity :: StgRhs -&gt; Int
</span><a href="GHC.Stg.Syntax.html#stgRhsArity"><span class="hs-identifier hs-var hs-var">stgRhsArity</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhsClosure"><span class="hs-identifier hs-type">StgRhsClosure</span></a></span><span> </span><span class="annot"><span class="annottext">XRhsClosure 'Vanilla
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">CostCentreStack
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">UpdateFlag
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680932432"><span class="annot"><span class="annottext">[BinderP 'Vanilla]
</span><a href="#local-6989586621680932432"><span class="hs-identifier hs-var">bndrs</span></a></span></span><span> </span><span class="annot"><span class="annottext">GenStgExpr 'Vanilla
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-481"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">ASSERT</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">all</span><span> </span><span class="hs-identifier">isId</span><span> </span><span class="hs-identifier">bndrs</span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-identifier">length</span><span> </span><span class="hs-identifier">bndrs</span><span>
</span><span id="line-482"></span><span>  </span><span class="hs-comment">-- The arity never includes type parameters, but they should have gone by now</span><span>
</span><span id="line-483"></span><span class="annot"><a href="GHC.Stg.Syntax.html#stgRhsArity"><span class="hs-identifier hs-var">stgRhsArity</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhsCon"><span class="hs-identifier hs-type">StgRhsCon</span></a></span><span> </span><span class="annot"><span class="annottext">CostCentreStack
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">[StgArg]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-484"></span><span>
</span><span id="line-485"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
STG case alternatives
*                                                                      *
************************************************************************

Very like in Core syntax (except no type-world stuff).

The type constructor is guaranteed not to be abstract; that is, we can see its
representation. This is important because the code generator uses it to
determine return conventions etc. But it's not trivial where there's a module
loop involved, because some versions of a type constructor might not have all
the constructors visible. So mkStgAlgAlts (in CoreToStg) ensures that it gets
the TyCon from the constructors or literals (which are guaranteed to have the
Real McCoy) rather than from the scrutinee type.
-}</span><span>
</span><span id="line-502"></span><span>
</span><span id="line-503"></span><span class="hs-keyword">type</span><span> </span><span id="GenStgAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgAlt"><span class="hs-identifier hs-var">GenStgAlt</span></a></span></span><span> </span><span id="local-6989586621680932426"><span class="annot"><a href="#local-6989586621680932426"><span class="hs-identifier hs-type">pass</span></a></span></span><span>
</span><span id="line-504"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#AltCon"><span class="hs-identifier hs-type">AltCon</span></a></span><span class="hs-special">,</span><span>          </span><span class="hs-comment">-- alts: data constructor,</span><span>
</span><span id="line-505"></span><span>     </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932426"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>  </span><span class="hs-comment">-- constructor's parameters,</span><span>
</span><span id="line-506"></span><span>     </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932426"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- ...right-hand side.</span><span>
</span><span id="line-507"></span><span>
</span><span id="line-508"></span><span class="hs-keyword">data</span><span> </span><span id="AltType"><span class="annot"><a href="GHC.Stg.Syntax.html#AltType"><span class="hs-identifier hs-var">AltType</span></a></span></span><span>
</span><span id="line-509"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="PolyAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#PolyAlt"><span class="hs-identifier hs-var">PolyAlt</span></a></span></span><span>             </span><span class="hs-comment">-- Polymorphic (a lifted type variable)</span><span>
</span><span id="line-510"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="MultiValAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#MultiValAlt"><span class="hs-identifier hs-var">MultiValAlt</span></a></span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>     </span><span class="hs-comment">-- Multi value of this arity (unboxed tuple or sum)</span><span>
</span><span id="line-511"></span><span>                        </span><span class="hs-comment">-- the arity could indeed be 1 for unary unboxed tuple</span><span>
</span><span id="line-512"></span><span>                        </span><span class="hs-comment">-- or enum-like unboxed sums</span><span>
</span><span id="line-513"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="AlgAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#AlgAlt"><span class="hs-identifier hs-var">AlgAlt</span></a></span></span><span>      </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>   </span><span class="hs-comment">-- Algebraic data type; the AltCons will be DataAlts</span><span>
</span><span id="line-514"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PrimAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#PrimAlt"><span class="hs-identifier hs-var">PrimAlt</span></a></span></span><span>     </span><span class="annot"><a href="GHC.Core.TyCon.html#PrimRep"><span class="hs-identifier hs-type">PrimRep</span></a></span><span> </span><span class="hs-comment">-- Primitive data type; the AltCons (if any) will be LitAlts</span><span>
</span><span id="line-515"></span><span>
</span><span id="line-516"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
The Plain STG parameterisation
*                                                                      *
************************************************************************

This happens to be the only one we use at the moment.
-}</span><span>
</span><span id="line-525"></span><span>
</span><span id="line-526"></span><span class="hs-keyword">type</span><span> </span><span id="StgTopBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopBinding"><span class="hs-identifier hs-var">StgTopBinding</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgTopBinding"><span class="hs-identifier hs-type">GenStgTopBinding</span></a></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-type">Vanilla</span></a></span><span>
</span><span id="line-527"></span><span class="hs-keyword">type</span><span> </span><span id="StgBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#StgBinding"><span class="hs-identifier hs-var">StgBinding</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier hs-type">GenStgBinding</span></a></span><span>    </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-type">Vanilla</span></a></span><span>
</span><span id="line-528"></span><span class="hs-keyword">type</span><span> </span><span id="StgExpr"><span class="annot"><a href="GHC.Stg.Syntax.html#StgExpr"><span class="hs-identifier hs-var">StgExpr</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span>       </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-type">Vanilla</span></a></span><span>
</span><span id="line-529"></span><span class="hs-keyword">type</span><span> </span><span id="StgRhs"><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhs"><span class="hs-identifier hs-var">StgRhs</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgRhs"><span class="hs-identifier hs-type">GenStgRhs</span></a></span><span>        </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-type">Vanilla</span></a></span><span>
</span><span id="line-530"></span><span class="hs-keyword">type</span><span> </span><span id="StgAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#StgAlt"><span class="hs-identifier hs-var">StgAlt</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgAlt"><span class="hs-identifier hs-type">GenStgAlt</span></a></span><span>        </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#Vanilla"><span class="hs-identifier hs-type">Vanilla</span></a></span><span>
</span><span id="line-531"></span><span>
</span><span id="line-532"></span><span class="hs-keyword">type</span><span> </span><span id="LlStgTopBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgTopBinding"><span class="hs-identifier hs-var">LlStgTopBinding</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgTopBinding"><span class="hs-identifier hs-type">GenStgTopBinding</span></a></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#LiftLams"><span class="hs-identifier hs-type">LiftLams</span></a></span><span>
</span><span id="line-533"></span><span class="hs-keyword">type</span><span> </span><span id="LlStgBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgBinding"><span class="hs-identifier hs-var">LlStgBinding</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier hs-type">GenStgBinding</span></a></span><span>    </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#LiftLams"><span class="hs-identifier hs-type">LiftLams</span></a></span><span>
</span><span id="line-534"></span><span class="hs-keyword">type</span><span> </span><span id="LlStgExpr"><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgExpr"><span class="hs-identifier hs-var">LlStgExpr</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span>       </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#LiftLams"><span class="hs-identifier hs-type">LiftLams</span></a></span><span>
</span><span id="line-535"></span><span class="hs-keyword">type</span><span> </span><span id="LlStgRhs"><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgRhs"><span class="hs-identifier hs-var">LlStgRhs</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgRhs"><span class="hs-identifier hs-type">GenStgRhs</span></a></span><span>        </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#LiftLams"><span class="hs-identifier hs-type">LiftLams</span></a></span><span>
</span><span id="line-536"></span><span class="hs-keyword">type</span><span> </span><span id="LlStgAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#LlStgAlt"><span class="hs-identifier hs-var">LlStgAlt</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgAlt"><span class="hs-identifier hs-type">GenStgAlt</span></a></span><span>        </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#LiftLams"><span class="hs-identifier hs-type">LiftLams</span></a></span><span>
</span><span id="line-537"></span><span>
</span><span id="line-538"></span><span class="hs-keyword">type</span><span> </span><span id="CgStgTopBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgTopBinding"><span class="hs-identifier hs-var">CgStgTopBinding</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgTopBinding"><span class="hs-identifier hs-type">GenStgTopBinding</span></a></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-type">CodeGen</span></a></span><span>
</span><span id="line-539"></span><span class="hs-keyword">type</span><span> </span><span id="CgStgBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgBinding"><span class="hs-identifier hs-var">CgStgBinding</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier hs-type">GenStgBinding</span></a></span><span>    </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-type">CodeGen</span></a></span><span>
</span><span id="line-540"></span><span class="hs-keyword">type</span><span> </span><span id="CgStgExpr"><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgExpr"><span class="hs-identifier hs-var">CgStgExpr</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span>       </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-type">CodeGen</span></a></span><span>
</span><span id="line-541"></span><span class="hs-keyword">type</span><span> </span><span id="CgStgRhs"><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgRhs"><span class="hs-identifier hs-var">CgStgRhs</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgRhs"><span class="hs-identifier hs-type">GenStgRhs</span></a></span><span>        </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-type">CodeGen</span></a></span><span>
</span><span id="line-542"></span><span class="hs-keyword">type</span><span> </span><span id="CgStgAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#CgStgAlt"><span class="hs-identifier hs-var">CgStgAlt</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgAlt"><span class="hs-identifier hs-type">GenStgAlt</span></a></span><span>        </span><span class="hs-special">'</span><span class="annot"><a href="GHC.Stg.Syntax.html#CodeGen"><span class="hs-identifier hs-type">CodeGen</span></a></span><span>
</span><span id="line-543"></span><span>
</span><span id="line-544"></span><span class="hs-comment">{- Many passes apply a substitution, and it's very handy to have type
   synonyms to remind us whether or not the substitution has been applied.
   See GHC.Core for precedence in Core land
-}</span><span>
</span><span id="line-548"></span><span>
</span><span id="line-549"></span><span class="hs-keyword">type</span><span> </span><span id="InStgTopBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#InStgTopBinding"><span class="hs-identifier hs-var">InStgTopBinding</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopBinding"><span class="hs-identifier hs-type">StgTopBinding</span></a></span><span>
</span><span id="line-550"></span><span class="hs-keyword">type</span><span> </span><span id="InStgBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#InStgBinding"><span class="hs-identifier hs-var">InStgBinding</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgBinding"><span class="hs-identifier hs-type">StgBinding</span></a></span><span>
</span><span id="line-551"></span><span class="hs-keyword">type</span><span> </span><span id="InStgArg"><span class="annot"><a href="GHC.Stg.Syntax.html#InStgArg"><span class="hs-identifier hs-var">InStgArg</span></a></span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span>
</span><span id="line-552"></span><span class="hs-keyword">type</span><span> </span><span id="InStgExpr"><span class="annot"><a href="GHC.Stg.Syntax.html#InStgExpr"><span class="hs-identifier hs-var">InStgExpr</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgExpr"><span class="hs-identifier hs-type">StgExpr</span></a></span><span>
</span><span id="line-553"></span><span class="hs-keyword">type</span><span> </span><span id="InStgRhs"><span class="annot"><a href="GHC.Stg.Syntax.html#InStgRhs"><span class="hs-identifier hs-var">InStgRhs</span></a></span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhs"><span class="hs-identifier hs-type">StgRhs</span></a></span><span>
</span><span id="line-554"></span><span class="hs-keyword">type</span><span> </span><span id="InStgAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#InStgAlt"><span class="hs-identifier hs-var">InStgAlt</span></a></span></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgAlt"><span class="hs-identifier hs-type">StgAlt</span></a></span><span>
</span><span id="line-555"></span><span class="hs-keyword">type</span><span> </span><span id="OutStgTopBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgTopBinding"><span class="hs-identifier hs-var">OutStgTopBinding</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopBinding"><span class="hs-identifier hs-type">StgTopBinding</span></a></span><span>
</span><span id="line-556"></span><span class="hs-keyword">type</span><span> </span><span id="OutStgBinding"><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgBinding"><span class="hs-identifier hs-var">OutStgBinding</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgBinding"><span class="hs-identifier hs-type">StgBinding</span></a></span><span>
</span><span id="line-557"></span><span class="hs-keyword">type</span><span> </span><span id="OutStgArg"><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgArg"><span class="hs-identifier hs-var">OutStgArg</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span>
</span><span id="line-558"></span><span class="hs-keyword">type</span><span> </span><span id="OutStgExpr"><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgExpr"><span class="hs-identifier hs-var">OutStgExpr</span></a></span></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgExpr"><span class="hs-identifier hs-type">StgExpr</span></a></span><span>
</span><span id="line-559"></span><span class="hs-keyword">type</span><span> </span><span id="OutStgRhs"><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgRhs"><span class="hs-identifier hs-var">OutStgRhs</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhs"><span class="hs-identifier hs-type">StgRhs</span></a></span><span>
</span><span id="line-560"></span><span class="hs-keyword">type</span><span> </span><span id="OutStgAlt"><span class="annot"><a href="GHC.Stg.Syntax.html#OutStgAlt"><span class="hs-identifier hs-var">OutStgAlt</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgAlt"><span class="hs-identifier hs-type">StgAlt</span></a></span><span>
</span><span id="line-561"></span><span>
</span><span id="line-562"></span><span class="hs-comment">{-

************************************************************************
*                                                                      *
UpdateFlag
*                                                                      *
************************************************************************

This is also used in @LambdaFormInfo@ in the @ClosureInfo@ module.

A @ReEntrant@ closure may be entered multiple times, but should not be updated
or blackholed. An @Updatable@ closure should be updated after evaluation (and
may be blackholed during evaluation). A @SingleEntry@ closure will only be
entered once, and so need not be updated but may safely be blackholed.
-}</span><span>
</span><span id="line-577"></span><span>
</span><span id="line-578"></span><span class="hs-keyword">data</span><span> </span><span id="UpdateFlag"><span class="annot"><a href="GHC.Stg.Syntax.html#UpdateFlag"><span class="hs-identifier hs-var">UpdateFlag</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="ReEntrant"><span class="annot"><a href="GHC.Stg.Syntax.html#ReEntrant"><span class="hs-identifier hs-var">ReEntrant</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span id="Updatable"><span class="annot"><a href="GHC.Stg.Syntax.html#Updatable"><span class="hs-identifier hs-var">Updatable</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span id="SingleEntry"><span class="annot"><a href="GHC.Stg.Syntax.html#SingleEntry"><span class="hs-identifier hs-var">SingleEntry</span></a></span></span><span>
</span><span id="line-579"></span><span>
</span><span id="line-580"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680932420"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#UpdateFlag"><span class="hs-identifier hs-type">UpdateFlag</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-581"></span><span>    </span><span id="local-6989586621680932419"><span class="annot"><span class="annottext">ppr :: UpdateFlag -&gt; SDoc
</span><a href="#local-6989586621680932419"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span id="local-6989586621680932418"><span class="annot"><span class="annottext">UpdateFlag
</span><a href="#local-6989586621680932418"><span class="hs-identifier hs-var">u</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">(Char -&gt; SDoc) -&gt; Char -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">UpdateFlag
</span><a href="#local-6989586621680932418"><span class="hs-identifier hs-var">u</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-582"></span><span>                       </span><span class="annot"><span class="annottext">UpdateFlag
</span><a href="GHC.Stg.Syntax.html#ReEntrant"><span class="hs-identifier hs-var">ReEntrant</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'r'</span></span><span>
</span><span id="line-583"></span><span>                       </span><span class="annot"><span class="annottext">UpdateFlag
</span><a href="GHC.Stg.Syntax.html#Updatable"><span class="hs-identifier hs-var">Updatable</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'u'</span></span><span>
</span><span id="line-584"></span><span>                       </span><span class="annot"><span class="annottext">UpdateFlag
</span><a href="GHC.Stg.Syntax.html#SingleEntry"><span class="hs-identifier hs-var">SingleEntry</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'s'</span></span><span>
</span><span id="line-585"></span><span>
</span><span id="line-586"></span><span class="annot"><a href="GHC.Stg.Syntax.html#isUpdatable"><span class="hs-identifier hs-type">isUpdatable</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#UpdateFlag"><span class="hs-identifier hs-type">UpdateFlag</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-587"></span><span id="isUpdatable"><span class="annot"><span class="annottext">isUpdatable :: UpdateFlag -&gt; Bool
</span><a href="GHC.Stg.Syntax.html#isUpdatable"><span class="hs-identifier hs-var hs-var">isUpdatable</span></a></span></span><span> </span><span class="annot"><span class="annottext">UpdateFlag
</span><a href="GHC.Stg.Syntax.html#ReEntrant"><span class="hs-identifier hs-var">ReEntrant</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-588"></span><span class="annot"><a href="GHC.Stg.Syntax.html#isUpdatable"><span class="hs-identifier hs-var">isUpdatable</span></a></span><span> </span><span class="annot"><span class="annottext">UpdateFlag
</span><a href="GHC.Stg.Syntax.html#SingleEntry"><span class="hs-identifier hs-var">SingleEntry</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-589"></span><span class="annot"><a href="GHC.Stg.Syntax.html#isUpdatable"><span class="hs-identifier hs-var">isUpdatable</span></a></span><span> </span><span class="annot"><span class="annottext">UpdateFlag
</span><a href="GHC.Stg.Syntax.html#Updatable"><span class="hs-identifier hs-var">Updatable</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-590"></span><span>
</span><span id="line-591"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
StgOp
*                                                                      *
************************************************************************

An StgOp allows us to group together PrimOps and ForeignCalls. It's quite useful
to move these around together, notably in StgOpApp and COpStmt.
-}</span><span>
</span><span id="line-601"></span><span>
</span><span id="line-602"></span><span class="hs-keyword">data</span><span> </span><span id="StgOp"><span class="annot"><a href="GHC.Stg.Syntax.html#StgOp"><span class="hs-identifier hs-var">StgOp</span></a></span></span><span>
</span><span id="line-603"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="StgPrimOp"><span class="annot"><a href="GHC.Stg.Syntax.html#StgPrimOp"><span class="hs-identifier hs-var">StgPrimOp</span></a></span></span><span>  </span><span class="annot"><a href="GHC.Builtin.PrimOps.html#PrimOp"><span class="hs-identifier hs-type">PrimOp</span></a></span><span>
</span><span id="line-604"></span><span>
</span><span id="line-605"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgPrimCallOp"><span class="annot"><a href="GHC.Stg.Syntax.html#StgPrimCallOp"><span class="hs-identifier hs-var">StgPrimCallOp</span></a></span></span><span> </span><span class="annot"><a href="GHC.Builtin.PrimOps.html#PrimCall"><span class="hs-identifier hs-type">PrimCall</span></a></span><span>
</span><span id="line-606"></span><span>
</span><span id="line-607"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StgFCallOp"><span class="annot"><a href="GHC.Stg.Syntax.html#StgFCallOp"><span class="hs-identifier hs-var">StgFCallOp</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.ForeignCall.html#ForeignCall"><span class="hs-identifier hs-type">ForeignCall</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-608"></span><span>        </span><span class="hs-comment">-- The Type, which is obtained from the foreign import declaration</span><span>
</span><span id="line-609"></span><span>        </span><span class="hs-comment">-- itself, is needed by the stg-to-cmm pass to determine the offset to</span><span>
</span><span id="line-610"></span><span>        </span><span class="hs-comment">-- apply to unlifted boxed arguments in GHC.StgToCmm.Foreign. See Note</span><span>
</span><span id="line-611"></span><span>        </span><span class="hs-comment">-- [Unlifted boxed arguments to foreign calls]</span><span>
</span><span id="line-612"></span><span>
</span><span id="line-613"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
Utilities
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-620"></span><span>
</span><span id="line-621"></span><span id="local-6989586621680932732"><span class="annot"><a href="GHC.Stg.Syntax.html#bindersOf"><span class="hs-identifier hs-type">bindersOf</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932732"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">~</span></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier hs-type">GenStgBinding</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932732"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">]</span></span><span>
</span><span id="line-622"></span><span id="bindersOf"><span class="annot"><span class="annottext">bindersOf :: forall (a :: StgPass). (BinderP a ~ Id) =&gt; GenStgBinding a -&gt; [Id]
</span><a href="GHC.Stg.Syntax.html#bindersOf"><span class="hs-identifier hs-var hs-var">bindersOf</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgNonRec"><span class="hs-identifier hs-type">StgNonRec</span></a></span><span> </span><span id="local-6989586621680932409"><span class="annot"><span class="annottext">BinderP a
</span><a href="#local-6989586621680932409"><span class="hs-identifier hs-var">binder</span></a></span></span><span> </span><span class="annot"><span class="annottext">GenStgRhs a
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Id
BinderP a
</span><a href="#local-6989586621680932409"><span class="hs-identifier hs-var">binder</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-623"></span><span class="annot"><a href="GHC.Stg.Syntax.html#bindersOf"><span class="hs-identifier hs-var">bindersOf</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRec"><span class="hs-identifier hs-type">StgRec</span></a></span><span> </span><span id="local-6989586621680932408"><span class="annot"><span class="annottext">[(BinderP a, GenStgRhs a)]
</span><a href="#local-6989586621680932408"><span class="hs-identifier hs-var">pairs</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932407"><span class="hs-identifier hs-var">binder</span></a></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680932407"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932407"><span class="hs-identifier hs-var">binder</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">GenStgRhs a
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(Id, GenStgRhs a)]
[(BinderP a, GenStgRhs a)]
</span><a href="#local-6989586621680932408"><span class="hs-identifier hs-var">pairs</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-624"></span><span>
</span><span id="line-625"></span><span id="local-6989586621680932728"><span class="annot"><a href="GHC.Stg.Syntax.html#bindersOfTop"><span class="hs-identifier hs-type">bindersOfTop</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932728"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">~</span></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgTopBinding"><span class="hs-identifier hs-type">GenStgTopBinding</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932728"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">]</span></span><span>
</span><span id="line-626"></span><span id="bindersOfTop"><span class="annot"><span class="annottext">bindersOfTop :: forall (a :: StgPass).
(BinderP a ~ Id) =&gt;
GenStgTopBinding a -&gt; [Id]
</span><a href="GHC.Stg.Syntax.html#bindersOfTop"><span class="hs-identifier hs-var hs-var">bindersOfTop</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopLifted"><span class="hs-identifier hs-type">StgTopLifted</span></a></span><span> </span><span id="local-6989586621680932400"><span class="annot"><span class="annottext">GenStgBinding a
</span><a href="#local-6989586621680932400"><span class="hs-identifier hs-var">bind</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GenStgBinding a -&gt; [Id]
forall (a :: StgPass). (BinderP a ~ Id) =&gt; GenStgBinding a -&gt; [Id]
</span><a href="GHC.Stg.Syntax.html#bindersOf"><span class="hs-identifier hs-var">bindersOf</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgBinding a
</span><a href="#local-6989586621680932400"><span class="hs-identifier hs-var">bind</span></a></span><span>
</span><span id="line-627"></span><span class="annot"><a href="GHC.Stg.Syntax.html#bindersOfTop"><span class="hs-identifier hs-var">bindersOfTop</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopStringLit"><span class="hs-identifier hs-type">StgTopStringLit</span></a></span><span> </span><span id="local-6989586621680932399"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932399"><span class="hs-identifier hs-var">binder</span></a></span></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932399"><span class="hs-identifier hs-var">binder</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-628"></span><span>
</span><span id="line-629"></span><span id="local-6989586621680932724"><span class="annot"><a href="GHC.Stg.Syntax.html#bindersOfTopBinds"><span class="hs-identifier hs-type">bindersOfTopBinds</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932724"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">~</span></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgTopBinding"><span class="hs-identifier hs-type">GenStgTopBinding</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932724"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">]</span></span><span>
</span><span id="line-630"></span><span id="bindersOfTopBinds"><span class="annot"><span class="annottext">bindersOfTopBinds :: forall (a :: StgPass).
(BinderP a ~ Id) =&gt;
[GenStgTopBinding a] -&gt; [Id]
</span><a href="GHC.Stg.Syntax.html#bindersOfTopBinds"><span class="hs-identifier hs-var hs-var">bindersOfTopBinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GenStgTopBinding a -&gt; [Id] -&gt; [Id])
-&gt; [Id] -&gt; [GenStgTopBinding a] -&gt; [Id]
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Id] -&gt; [Id] -&gt; [Id]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">(++)</span></a></span><span> </span><span class="annot"><span class="annottext">([Id] -&gt; [Id] -&gt; [Id])
-&gt; (GenStgTopBinding a -&gt; [Id])
-&gt; GenStgTopBinding a
-&gt; [Id]
-&gt; [Id]
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgTopBinding a -&gt; [Id]
forall (a :: StgPass).
(BinderP a ~ Id) =&gt;
GenStgTopBinding a -&gt; [Id]
</span><a href="GHC.Stg.Syntax.html#bindersOfTop"><span class="hs-identifier hs-var">bindersOfTop</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-631"></span><span>
</span><span id="line-632"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
Pretty-printing
*                                                                      *
************************************************************************

Robin Popplestone asked for semi-colon separators on STG binds; here's hoping he
likes terminators instead...  Ditto for case alternatives.
-}</span><span>
</span><span id="line-642"></span><span>
</span><span id="line-643"></span><span class="hs-keyword">type</span><span> </span><span id="OutputablePass"><span class="annot"><a href="GHC.Stg.Syntax.html#OutputablePass"><span class="hs-identifier hs-var">OutputablePass</span></a></span></span><span> </span><span id="local-6989586621680932389"><span class="annot"><a href="#local-6989586621680932389"><span class="hs-identifier hs-type">pass</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-644"></span><span>  </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#XLet"><span class="hs-identifier hs-type">XLet</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932389"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-645"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#XLetNoEscape"><span class="hs-identifier hs-type">XLetNoEscape</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932389"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-646"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#XRhsClosure"><span class="hs-identifier hs-type">XRhsClosure</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932389"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-647"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#OutputableBndr"><span class="hs-identifier hs-type">OutputableBndr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#BinderP"><span class="hs-identifier hs-type">BinderP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932389"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-648"></span><span>  </span><span class="hs-special">)</span><span>
</span><span id="line-649"></span><span>
</span><span id="line-650"></span><span class="hs-comment">-- | STG pretty-printing options</span><span>
</span><span id="line-651"></span><span class="hs-keyword">data</span><span> </span><span id="StgPprOpts"><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-var">StgPprOpts</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="StgPprOpts"><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-var">StgPprOpts</span></a></span></span><span>
</span><span id="line-652"></span><span>   </span><span class="hs-special">{</span><span> </span><span id="stgSccEnabled"><span class="annot"><span class="annottext">StgPprOpts -&gt; Bool
</span><a href="GHC.Stg.Syntax.html#stgSccEnabled"><span class="hs-identifier hs-var hs-var">stgSccEnabled</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-comment">-- ^ Enable cost-centres</span><span>
</span><span id="line-653"></span><span>   </span><span class="hs-special">}</span><span>
</span><span id="line-654"></span><span>
</span><span id="line-655"></span><span class="hs-comment">-- | Initialize STG pretty-printing options from DynFlags</span><span>
</span><span id="line-656"></span><span class="annot"><a href="GHC.Stg.Syntax.html#initStgPprOpts"><span class="hs-identifier hs-type">initStgPprOpts</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span>
</span><span id="line-657"></span><span id="initStgPprOpts"><span class="annot"><span class="annottext">initStgPprOpts :: DynFlags -&gt; StgPprOpts
</span><a href="GHC.Stg.Syntax.html#initStgPprOpts"><span class="hs-identifier hs-var hs-var">initStgPprOpts</span></a></span></span><span> </span><span id="local-6989586621680932386"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680932386"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StgPprOpts :: Bool -&gt; StgPprOpts
</span><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span>
</span><span id="line-658"></span><span>   </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">stgSccEnabled :: Bool
</span><a href="GHC.Stg.Syntax.html#stgSccEnabled"><span class="hs-identifier hs-var">stgSccEnabled</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Bool
</span><a href="GHC.Driver.Session.html#sccProfilingEnabled"><span class="hs-identifier hs-var">sccProfilingEnabled</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680932386"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-659"></span><span>   </span><span class="hs-special">}</span><span>
</span><span id="line-660"></span><span>
</span><span id="line-661"></span><span class="hs-comment">-- | STG pretty-printing options used for panic messages</span><span>
</span><span id="line-662"></span><span class="annot"><a href="GHC.Stg.Syntax.html#panicStgPprOpts"><span class="hs-identifier hs-type">panicStgPprOpts</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span>
</span><span id="line-663"></span><span id="panicStgPprOpts"><span class="annot"><span class="annottext">panicStgPprOpts :: StgPprOpts
</span><a href="GHC.Stg.Syntax.html#panicStgPprOpts"><span class="hs-identifier hs-var hs-var">panicStgPprOpts</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StgPprOpts :: Bool -&gt; StgPprOpts
</span><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span>
</span><span id="line-664"></span><span>   </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">stgSccEnabled :: Bool
</span><a href="GHC.Stg.Syntax.html#stgSccEnabled"><span class="hs-identifier hs-var">stgSccEnabled</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-665"></span><span>   </span><span class="hs-special">}</span><span>
</span><span id="line-666"></span><span>
</span><span id="line-667"></span><span id="local-6989586621680932715"><span class="annot"><a href="GHC.Stg.Syntax.html#pprGenStgTopBinding"><span class="hs-identifier hs-type">pprGenStgTopBinding</span></a></span><span>
</span><span id="line-668"></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutputablePass"><span class="hs-identifier hs-type">OutputablePass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932715"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgTopBinding"><span class="hs-identifier hs-type">GenStgTopBinding</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932715"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-669"></span><span id="pprGenStgTopBinding"><span class="annot"><span class="annottext">pprGenStgTopBinding :: forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgTopBinding pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgTopBinding"><span class="hs-identifier hs-var hs-var">pprGenStgTopBinding</span></a></span></span><span> </span><span id="local-6989586621680932377"><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932377"><span class="hs-identifier hs-var">opts</span></a></span></span><span> </span><span id="local-6989586621680932376"><span class="annot"><span class="annottext">GenStgTopBinding pass
</span><a href="#local-6989586621680932376"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">GenStgTopBinding pass
</span><a href="#local-6989586621680932376"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-670"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopStringLit"><span class="hs-identifier hs-type">StgTopStringLit</span></a></span><span> </span><span id="local-6989586621680932375"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932375"><span class="hs-identifier hs-var">bndr</span></a></span></span><span> </span><span id="local-6989586621680932374"><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680932374"><span class="hs-identifier hs-var">str</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BindingSite -&gt; Id -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#LetBind"><span class="hs-identifier hs-var">LetBind</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932375"><span class="hs-identifier hs-var">bndr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ByteString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprHsBytes"><span class="hs-identifier hs-var">pprHsBytes</span></a></span><span> </span><span class="annot"><span class="annottext">ByteString
</span><a href="#local-6989586621680932374"><span class="hs-identifier hs-var">str</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-671"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopLifted"><span class="hs-identifier hs-type">StgTopLifted</span></a></span><span> </span><span id="local-6989586621680932365"><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932365"><span class="hs-identifier hs-var">bind</span></a></span></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgBinding"><span class="hs-identifier hs-var">pprGenStgBinding</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932377"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932365"><span class="hs-identifier hs-var">bind</span></a></span><span>
</span><span id="line-672"></span><span>
</span><span id="line-673"></span><span id="local-6989586621680932709"><span class="annot"><a href="GHC.Stg.Syntax.html#pprGenStgBinding"><span class="hs-identifier hs-type">pprGenStgBinding</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutputablePass"><span class="hs-identifier hs-type">OutputablePass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932709"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgBinding"><span class="hs-identifier hs-type">GenStgBinding</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932709"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-674"></span><span id="pprGenStgBinding"><span class="annot"><span class="annottext">pprGenStgBinding :: forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgBinding"><span class="hs-identifier hs-var hs-var">pprGenStgBinding</span></a></span></span><span> </span><span id="local-6989586621680932351"><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932351"><span class="hs-identifier hs-var">opts</span></a></span></span><span> </span><span id="local-6989586621680932350"><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932350"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932350"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-675"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgNonRec"><span class="hs-identifier hs-type">StgNonRec</span></a></span><span> </span><span id="local-6989586621680932349"><span class="annot"><span class="annottext">BinderP pass
</span><a href="#local-6989586621680932349"><span class="hs-identifier hs-var">bndr</span></a></span></span><span> </span><span id="local-6989586621680932348"><span class="annot"><span class="annottext">GenStgRhs pass
</span><a href="#local-6989586621680932348"><span class="hs-identifier hs-var">rhs</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BindingSite -&gt; BinderP pass -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#LetBind"><span class="hs-identifier hs-var">LetBind</span></a></span><span> </span><span class="annot"><span class="annottext">BinderP pass
</span><a href="#local-6989586621680932349"><span class="hs-identifier hs-var">bndr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgRhs pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgRhs pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgRhs"><span class="hs-identifier hs-var">pprStgRhs</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932351"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgRhs pass
</span><a href="#local-6989586621680932348"><span class="hs-identifier hs-var">rhs</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-676"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRec"><span class="hs-identifier hs-type">StgRec</span></a></span><span> </span><span id="local-6989586621680932347"><span class="annot"><span class="annottext">[(BinderP pass, GenStgRhs pass)]
</span><a href="#local-6989586621680932347"><span class="hs-identifier hs-var">pairs</span></a></span></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Rec {&quot;</span></span><span>
</span><span id="line-677"></span><span>                              </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
forall a. a -&gt; [a] -&gt; [a]
</span><a href="../../base/src/Data.OldList.html#intersperse"><span class="hs-identifier hs-var">intersperse</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#blankLine"><span class="hs-identifier hs-var">blankLine</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">((BinderP pass, GenStgRhs pass) -&gt; SDoc)
-&gt; [(BinderP pass, GenStgRhs pass)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">(BinderP pass, GenStgRhs pass) -&gt; SDoc
</span><a href="#local-6989586621680932343"><span class="hs-identifier hs-var">ppr_bind</span></a></span><span> </span><span class="annot"><span class="annottext">[(BinderP pass, GenStgRhs pass)]
</span><a href="#local-6989586621680932347"><span class="hs-identifier hs-var">pairs</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-678"></span><span>                              </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;end Rec }&quot;</span></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-679"></span><span>                         </span><span class="hs-keyword">where</span><span>
</span><span id="line-680"></span><span>                           </span><span id="local-6989586621680932343"><span class="annot"><span class="annottext">ppr_bind :: (BinderP pass, GenStgRhs pass) -&gt; SDoc
</span><a href="#local-6989586621680932343"><span class="hs-identifier hs-var hs-var">ppr_bind</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680932342"><span class="annot"><span class="annottext">BinderP pass
</span><a href="#local-6989586621680932342"><span class="hs-identifier hs-var">bndr</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680932341"><span class="annot"><span class="annottext">GenStgRhs pass
</span><a href="#local-6989586621680932341"><span class="hs-identifier hs-var">expr</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-681"></span><span>                             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BindingSite -&gt; BinderP pass -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#LetBind"><span class="hs-identifier hs-var">LetBind</span></a></span><span> </span><span class="annot"><span class="annottext">BinderP pass
</span><a href="#local-6989586621680932342"><span class="hs-identifier hs-var">bndr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-682"></span><span>                                    </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgRhs pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgRhs pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgRhs"><span class="hs-identifier hs-var">pprStgRhs</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932351"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgRhs pass
</span><a href="#local-6989586621680932341"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-683"></span><span>
</span><span id="line-684"></span><span id="local-6989586621680932700"><span class="annot"><a href="GHC.Stg.Syntax.html#pprGenStgTopBindings"><span class="hs-identifier hs-type">pprGenStgTopBindings</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#OutputablePass"><span class="hs-identifier hs-type">OutputablePass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932700"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgTopBinding"><span class="hs-identifier hs-type">GenStgTopBinding</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932700"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-685"></span><span id="pprGenStgTopBindings"><span class="annot"><span class="annottext">pprGenStgTopBindings :: forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; [GenStgTopBinding pass] -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgTopBindings"><span class="hs-identifier hs-var hs-var">pprGenStgTopBindings</span></a></span></span><span> </span><span id="local-6989586621680932334"><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932334"><span class="hs-identifier hs-var">opts</span></a></span></span><span> </span><span id="local-6989586621680932333"><span class="annot"><span class="annottext">[GenStgTopBinding pass]
</span><a href="#local-6989586621680932333"><span class="hs-identifier hs-var">binds</span></a></span></span><span>
</span><span id="line-686"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
forall a. a -&gt; [a] -&gt; [a]
</span><a href="../../base/src/Data.OldList.html#intersperse"><span class="hs-identifier hs-var">intersperse</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#blankLine"><span class="hs-identifier hs-var">blankLine</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(GenStgTopBinding pass -&gt; SDoc)
-&gt; [GenStgTopBinding pass] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgTopBinding pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgTopBinding pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgTopBinding"><span class="hs-identifier hs-var">pprGenStgTopBinding</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932334"><span class="hs-identifier hs-var">opts</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[GenStgTopBinding pass]
</span><a href="#local-6989586621680932333"><span class="hs-identifier hs-var">binds</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-687"></span><span>
</span><span id="line-688"></span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgBinding"><span class="hs-identifier hs-type">pprStgBinding</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgBinding"><span class="hs-identifier hs-type">StgBinding</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-689"></span><span id="pprStgBinding"><span class="annot"><span class="annottext">pprStgBinding :: StgPprOpts -&gt; StgBinding -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgBinding"><span class="hs-identifier hs-var hs-var">pprStgBinding</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; StgBinding -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgBinding"><span class="hs-identifier hs-var">pprGenStgBinding</span></a></span><span>
</span><span id="line-690"></span><span>
</span><span id="line-691"></span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgTopBinding"><span class="hs-identifier hs-type">pprStgTopBinding</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopBinding"><span class="hs-identifier hs-type">StgTopBinding</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-692"></span><span id="pprStgTopBinding"><span class="annot"><span class="annottext">pprStgTopBinding :: StgPprOpts -&gt; StgTopBinding -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgTopBinding"><span class="hs-identifier hs-var hs-var">pprStgTopBinding</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; StgTopBinding -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgTopBinding pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgTopBinding"><span class="hs-identifier hs-var">pprGenStgTopBinding</span></a></span><span>
</span><span id="line-693"></span><span>
</span><span id="line-694"></span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgTopBindings"><span class="hs-identifier hs-type">pprStgTopBindings</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTopBinding"><span class="hs-identifier hs-type">StgTopBinding</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-695"></span><span id="pprStgTopBindings"><span class="annot"><span class="annottext">pprStgTopBindings :: StgPprOpts -&gt; [StgTopBinding] -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgTopBindings"><span class="hs-identifier hs-var hs-var">pprStgTopBindings</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; [StgTopBinding] -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; [GenStgTopBinding pass] -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgTopBindings"><span class="hs-identifier hs-var">pprGenStgTopBindings</span></a></span><span>
</span><span id="line-696"></span><span>
</span><span id="line-697"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680932330"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-698"></span><span>  </span><span id="local-6989586621680932329"><span class="annot"><span class="annottext">ppr :: StgArg -&gt; SDoc
</span><a href="#local-6989586621680932329"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StgArg -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgArg"><span class="hs-identifier hs-var">pprStgArg</span></a></span><span>
</span><span id="line-699"></span><span>
</span><span id="line-700"></span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgArg"><span class="hs-identifier hs-type">pprStgArg</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgArg"><span class="hs-identifier hs-type">StgArg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-701"></span><span id="pprStgArg"><span class="annot"><span class="annottext">pprStgArg :: StgArg -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgArg"><span class="hs-identifier hs-var hs-var">pprStgArg</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgVarArg"><span class="hs-identifier hs-type">StgVarArg</span></a></span><span> </span><span id="local-6989586621680932328"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932328"><span class="hs-identifier hs-var">var</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Id -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932328"><span class="hs-identifier hs-var">var</span></a></span><span>
</span><span id="line-702"></span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgArg"><span class="hs-identifier hs-var">pprStgArg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgLitArg"><span class="hs-identifier hs-type">StgLitArg</span></a></span><span> </span><span id="local-6989586621680932327"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680932327"><span class="hs-identifier hs-var">con</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Literal -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680932327"><span class="hs-identifier hs-var">con</span></a></span><span>
</span><span id="line-703"></span><span>
</span><span id="line-704"></span><span id="local-6989586621680932696"><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-type">pprStgExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutputablePass"><span class="hs-identifier hs-type">OutputablePass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932696"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgExpr"><span class="hs-identifier hs-type">GenStgExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932696"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-705"></span><span id="pprStgExpr"><span class="annot"><span class="annottext">pprStgExpr :: forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var hs-var">pprStgExpr</span></a></span></span><span> </span><span id="local-6989586621680932283"><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span></span><span> </span><span id="local-6989586621680932282"><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932282"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932282"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-706"></span><span>                           </span><span class="hs-comment">-- special case</span><span>
</span><span id="line-707"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgLit"><span class="hs-identifier hs-type">StgLit</span></a></span><span> </span><span id="local-6989586621680932281"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680932281"><span class="hs-identifier hs-var">lit</span></a></span></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Literal -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680932281"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-708"></span><span>                           </span><span class="hs-comment">-- general case</span><span>
</span><span id="line-709"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgApp"><span class="hs-identifier hs-type">StgApp</span></a></span><span> </span><span id="local-6989586621680932280"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932280"><span class="hs-identifier hs-var">func</span></a></span></span><span> </span><span id="local-6989586621680932279"><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932279"><span class="hs-identifier hs-var">args</span></a></span></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680932280"><span class="hs-identifier hs-var">func</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[StgArg] -&gt; SDoc
forall a. Outputable a =&gt; [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#interppSP"><span class="hs-identifier hs-var">interppSP</span></a></span><span> </span><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932279"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-710"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgConApp"><span class="hs-identifier hs-type">StgConApp</span></a></span><span> </span><span id="local-6989586621680932277"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680932277"><span class="hs-identifier hs-var">con</span></a></span></span><span> </span><span id="local-6989586621680932276"><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932276"><span class="hs-identifier hs-var">args</span></a></span></span><span> </span><span class="annot"><span class="annottext">[UnaryType]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680932277"><span class="hs-identifier hs-var">con</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[StgArg] -&gt; SDoc
forall a. Outputable a =&gt; [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#interppSP"><span class="hs-identifier hs-var">interppSP</span></a></span><span> </span><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932276"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-711"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgOpApp"><span class="hs-identifier hs-type">StgOpApp</span></a></span><span> </span><span id="local-6989586621680932274"><span class="annot"><span class="annottext">StgOp
</span><a href="#local-6989586621680932274"><span class="hs-identifier hs-var">op</span></a></span></span><span> </span><span id="local-6989586621680932273"><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932273"><span class="hs-identifier hs-var">args</span></a></span></span><span> </span><span class="annot"><span class="annottext">UnaryType
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">StgOp -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgOp"><span class="hs-identifier hs-var">pprStgOp</span></a></span><span> </span><span class="annot"><span class="annottext">StgOp
</span><a href="#local-6989586621680932274"><span class="hs-identifier hs-var">op</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[StgArg] -&gt; SDoc
forall a. Outputable a =&gt; [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#interppSP"><span class="hs-identifier hs-var">interppSP</span></a></span><span> </span><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932273"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-712"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgLam"><span class="hs-identifier hs-type">StgLam</span></a></span><span> </span><span id="local-6989586621680932271"><span class="annot"><span class="annottext">NonEmpty (BinderP pass)
</span><a href="#local-6989586621680932271"><span class="hs-identifier hs-var">bndrs</span></a></span></span><span> </span><span id="local-6989586621680932270"><span class="annot"><span class="annottext">GenStgExpr 'Vanilla
</span><a href="#local-6989586621680932270"><span class="hs-identifier hs-var">body</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680932269"><span class="annot"><span class="annottext">ppr_list :: [SDoc] -&gt; SDoc
</span><a href="#local-6989586621680932269"><span class="hs-identifier hs-var hs-var">ppr_list</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; ([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#fsep"><span class="hs-identifier hs-var">fsep</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; ([SDoc] -&gt; [SDoc]) -&gt; [SDoc] -&gt; SDoc
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
</span><a href="GHC.Utils.Outputable.html#punctuate"><span class="hs-identifier hs-var">punctuate</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span>
</span><span id="line-713"></span><span>                           </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'\\'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="#local-6989586621680932269"><span class="hs-identifier hs-var">ppr_list</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(BinderP pass -&gt; SDoc) -&gt; [BinderP pass] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BindingSite -&gt; BinderP pass -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#LambdaBind"><span class="hs-identifier hs-var">LambdaBind</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NonEmpty (BinderP pass) -&gt; [BinderP pass]
forall a. NonEmpty a -&gt; [a]
</span><a href="../../base/src/Data.List.NonEmpty.html#toList"><span class="hs-identifier hs-var">toList</span></a></span><span> </span><span class="annot"><span class="annottext">NonEmpty (BinderP pass)
</span><a href="#local-6989586621680932271"><span class="hs-identifier hs-var">bndrs</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-714"></span><span>                                      </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;-&gt;&quot;</span></span><span>
</span><span id="line-715"></span><span>                                  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr 'Vanilla -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr 'Vanilla
</span><a href="#local-6989586621680932270"><span class="hs-identifier hs-var">body</span></a></span><span>
</span><span id="line-716"></span><span>                                  </span><span class="hs-special">]</span><span>
</span><span id="line-717"></span><span>
</span><span id="line-718"></span><span class="hs-comment">-- special case: let v = &lt;very specific thing&gt;</span><span>
</span><span id="line-719"></span><span class="hs-comment">--               in</span><span>
</span><span id="line-720"></span><span class="hs-comment">--               let ...</span><span>
</span><span id="line-721"></span><span class="hs-comment">--               in</span><span>
</span><span id="line-722"></span><span class="hs-comment">--               ...</span><span>
</span><span id="line-723"></span><span class="hs-comment">--</span><span>
</span><span id="line-724"></span><span class="hs-comment">-- Very special!  Suspicious! (SLPJ)</span><span>
</span><span id="line-725"></span><span>
</span><span id="line-726"></span><span class="hs-comment">{-
   StgLet srt (StgNonRec bndr (StgRhsClosure cc bi free_vars upd_flag args rhs))
                        expr@(StgLet _ _))
   -&gt; ($$)
      (hang (hcat [text &quot;let { &quot;, ppr bndr, ptext (sLit &quot; = &quot;),
                          ppr cc,
                          pp_binder_info bi,
                          text &quot; [&quot;, whenPprDebug (interppSP free_vars), ptext (sLit &quot;] \\&quot;),
                          ppr upd_flag, text &quot; [&quot;,
                          interppSP args, char ']'])
            8 (sep [hsep [ppr rhs, text &quot;} in&quot;]]))
      (ppr expr)
-}</span><span>
</span><span id="line-739"></span><span>
</span><span id="line-740"></span><span>   </span><span class="hs-comment">-- special case: let ... in let ...</span><span>
</span><span id="line-741"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgLet"><span class="hs-identifier hs-type">StgLet</span></a></span><span> </span><span id="local-6989586621680932262"><span class="annot"><span class="annottext">XLet pass
</span><a href="#local-6989586621680932262"><span class="hs-identifier hs-var">ext</span></a></span></span><span> </span><span id="local-6989586621680932261"><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932261"><span class="hs-identifier hs-var">bind</span></a></span></span><span> </span><span id="local-6989586621680932260"><span class="annot"><span class="annottext">expr :: GenStgExpr pass
</span><a href="#local-6989586621680932260"><span class="hs-identifier hs-var">expr</span></a></span></span><span class="hs-glyph">@</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgLet"><span class="hs-identifier hs-type">StgLet</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">($$)</span></a></span><span>
</span><span id="line-742"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;let&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">XLet pass -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">XLet pass
</span><a href="#local-6989586621680932262"><span class="hs-identifier hs-var">ext</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-743"></span><span>                </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgBinding"><span class="hs-identifier hs-var">pprGenStgBinding</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932261"><span class="hs-identifier hs-var">bind</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;} in&quot;</span></span><span class="hs-special">]</span><span class="hs-special">)</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-744"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932260"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-745"></span><span>
</span><span id="line-746"></span><span>   </span><span class="hs-comment">-- general case</span><span>
</span><span id="line-747"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgLet"><span class="hs-identifier hs-type">StgLet</span></a></span><span> </span><span id="local-6989586621680932258"><span class="annot"><span class="annottext">XLet pass
</span><a href="#local-6989586621680932258"><span class="hs-identifier hs-var">ext</span></a></span></span><span> </span><span id="local-6989586621680932257"><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932257"><span class="hs-identifier hs-var">bind</span></a></span></span><span> </span><span id="local-6989586621680932256"><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932256"><span class="hs-identifier hs-var">expr</span></a></span></span><span>
</span><span id="line-748"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;let&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">XLet pass -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">XLet pass
</span><a href="#local-6989586621680932258"><span class="hs-identifier hs-var">ext</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-749"></span><span>                    </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgBinding"><span class="hs-identifier hs-var">pprGenStgBinding</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932257"><span class="hs-identifier hs-var">bind</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-750"></span><span>             </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;} in &quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932256"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-751"></span><span>             </span><span class="hs-special">]</span><span>
</span><span id="line-752"></span><span>
</span><span id="line-753"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgLetNoEscape"><span class="hs-identifier hs-type">StgLetNoEscape</span></a></span><span> </span><span id="local-6989586621680932255"><span class="annot"><span class="annottext">XLetNoEscape pass
</span><a href="#local-6989586621680932255"><span class="hs-identifier hs-var">ext</span></a></span></span><span> </span><span id="local-6989586621680932254"><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932254"><span class="hs-identifier hs-var">bind</span></a></span></span><span> </span><span id="local-6989586621680932253"><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932253"><span class="hs-identifier hs-var">expr</span></a></span></span><span>
</span><span id="line-754"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;let-no-escape&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">XLetNoEscape pass -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">XLetNoEscape pass
</span><a href="#local-6989586621680932255"><span class="hs-identifier hs-var">ext</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-755"></span><span>                    </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgBinding pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprGenStgBinding"><span class="hs-identifier hs-var">pprGenStgBinding</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgBinding pass
</span><a href="#local-6989586621680932254"><span class="hs-identifier hs-var">bind</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-756"></span><span>             </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;} in &quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932253"><span class="hs-identifier hs-var">expr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-757"></span><span>             </span><span class="hs-special">]</span><span>
</span><span id="line-758"></span><span>
</span><span id="line-759"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgTick"><span class="hs-identifier hs-type">StgTick</span></a></span><span> </span><span id="local-6989586621680932252"><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680932252"><span class="hs-identifier hs-var">tickish</span></a></span></span><span> </span><span id="local-6989586621680932251"><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932251"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">(SDocContext -&gt; Bool) -&gt; (Bool -&gt; SDoc) -&gt; SDoc
forall a. (SDocContext -&gt; a) -&gt; (a -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sdocOption"><span class="hs-identifier hs-var">sdocOption</span></a></span><span> </span><span class="annot"><span class="annottext">SDocContext -&gt; Bool
</span><a href="GHC.Utils.Outputable.html#sdocSuppressTicks"><span class="hs-identifier hs-var hs-var">sdocSuppressTicks</span></a></span><span> </span><span class="annot"><span class="annottext">((Bool -&gt; SDoc) -&gt; SDoc) -&gt; (Bool -&gt; SDoc) -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-760"></span><span>      </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932251"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-761"></span><span>      </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Tickish Id -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Tickish Id
</span><a href="#local-6989586621680932252"><span class="hs-identifier hs-var">tickish</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932251"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-762"></span><span>
</span><span id="line-763"></span><span>   </span><span class="hs-comment">-- Don't indent for a single case alternative.</span><span>
</span><span id="line-764"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgCase"><span class="hs-identifier hs-type">StgCase</span></a></span><span> </span><span id="local-6989586621680932248"><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932248"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span id="local-6989586621680932247"><span class="annot"><span class="annottext">BinderP pass
</span><a href="#local-6989586621680932247"><span class="hs-identifier hs-var">bndr</span></a></span></span><span> </span><span id="local-6989586621680932246"><span class="annot"><span class="annottext">AltType
</span><a href="#local-6989586621680932246"><span class="hs-identifier hs-var">alt_type</span></a></span></span><span> </span><span class="hs-special">[</span><span id="local-6989586621680932245"><span class="annot"><span class="annottext">GenStgAlt pass
</span><a href="#local-6989586621680932245"><span class="hs-identifier hs-var">alt</span></a></span></span><span class="hs-special">]</span><span>
</span><span id="line-765"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;case&quot;</span></span><span>
</span><span id="line-766"></span><span>                   </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932248"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-767"></span><span>                                  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#whenPprDebug"><span class="hs-identifier hs-var">whenPprDebug</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#dcolon"><span class="hs-identifier hs-var">dcolon</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">AltType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">AltType
</span><a href="#local-6989586621680932246"><span class="hs-identifier hs-var">alt_type</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-768"></span><span>                                  </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-769"></span><span>                   </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;of&quot;</span></span><span>
</span><span id="line-770"></span><span>                   </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">BindingSite -&gt; BinderP pass -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#CaseBind"><span class="hs-identifier hs-var">CaseBind</span></a></span><span> </span><span class="annot"><span class="annottext">BinderP pass
</span><a href="#local-6989586621680932247"><span class="hs-identifier hs-var">bndr</span></a></span><span>
</span><span id="line-771"></span><span>                   </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'{'</span></span><span>
</span><span id="line-772"></span><span>                   </span><span class="hs-special">]</span><span>
</span><span id="line-773"></span><span>             </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; Bool -&gt; GenStgAlt pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; Bool -&gt; GenStgAlt pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgAlt"><span class="hs-identifier hs-var">pprStgAlt</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">GenStgAlt pass
</span><a href="#local-6989586621680932245"><span class="hs-identifier hs-var">alt</span></a></span><span>
</span><span id="line-774"></span><span>             </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'}'</span></span><span>
</span><span id="line-775"></span><span>             </span><span class="hs-special">]</span><span>
</span><span id="line-776"></span><span>
</span><span id="line-777"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgCase"><span class="hs-identifier hs-type">StgCase</span></a></span><span> </span><span id="local-6989586621680932239"><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932239"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span id="local-6989586621680932238"><span class="annot"><span class="annottext">BinderP pass
</span><a href="#local-6989586621680932238"><span class="hs-identifier hs-var">bndr</span></a></span></span><span> </span><span id="local-6989586621680932237"><span class="annot"><span class="annottext">AltType
</span><a href="#local-6989586621680932237"><span class="hs-identifier hs-var">alt_type</span></a></span></span><span> </span><span id="local-6989586621680932236"><span class="annot"><span class="annottext">[GenStgAlt pass]
</span><a href="#local-6989586621680932236"><span class="hs-identifier hs-var">alts</span></a></span></span><span>
</span><span id="line-778"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;case&quot;</span></span><span>
</span><span id="line-779"></span><span>                   </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932239"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-780"></span><span>                                  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#whenPprDebug"><span class="hs-identifier hs-var">whenPprDebug</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#dcolon"><span class="hs-identifier hs-var">dcolon</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">AltType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">AltType
</span><a href="#local-6989586621680932237"><span class="hs-identifier hs-var">alt_type</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-781"></span><span>                                  </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-782"></span><span>                   </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;of&quot;</span></span><span>
</span><span id="line-783"></span><span>                   </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">BindingSite -&gt; BinderP pass -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#CaseBind"><span class="hs-identifier hs-var">CaseBind</span></a></span><span> </span><span class="annot"><span class="annottext">BinderP pass
</span><a href="#local-6989586621680932238"><span class="hs-identifier hs-var">bndr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'{'</span></span><span>
</span><span id="line-784"></span><span>                   </span><span class="hs-special">]</span><span>
</span><span id="line-785"></span><span>             </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(GenStgAlt pass -&gt; SDoc) -&gt; [GenStgAlt pass] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; Bool -&gt; GenStgAlt pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; Bool -&gt; GenStgAlt pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgAlt"><span class="hs-identifier hs-var">pprStgAlt</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932283"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[GenStgAlt pass]
</span><a href="#local-6989586621680932236"><span class="hs-identifier hs-var">alts</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-786"></span><span>             </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'}'</span></span><span>
</span><span id="line-787"></span><span>             </span><span class="hs-special">]</span><span>
</span><span id="line-788"></span><span>
</span><span id="line-789"></span><span>
</span><span id="line-790"></span><span id="local-6989586621680932686"><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgAlt"><span class="hs-identifier hs-type">pprStgAlt</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutputablePass"><span class="hs-identifier hs-type">OutputablePass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932686"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgAlt"><span class="hs-identifier hs-type">GenStgAlt</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932686"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-791"></span><span id="pprStgAlt"><span class="annot"><span class="annottext">pprStgAlt :: forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; Bool -&gt; GenStgAlt pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgAlt"><span class="hs-identifier hs-var hs-var">pprStgAlt</span></a></span></span><span> </span><span id="local-6989586621680932223"><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932223"><span class="hs-identifier hs-var">opts</span></a></span></span><span> </span><span id="local-6989586621680932222"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680932222"><span class="hs-identifier hs-var">indent</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680932221"><span class="annot"><span class="annottext">AltCon
</span><a href="#local-6989586621680932221"><span class="hs-identifier hs-var">con</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680932220"><span class="annot"><span class="annottext">[BinderP pass]
</span><a href="#local-6989586621680932220"><span class="hs-identifier hs-var">params</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680932219"><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932219"><span class="hs-identifier hs-var">expr</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-792"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680932222"><span class="hs-identifier hs-var">indent</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680932218"><span class="hs-identifier hs-var">altPattern</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932223"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932219"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-793"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680932218"><span class="hs-identifier hs-var">altPattern</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932223"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932219"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#semi"><span class="hs-identifier hs-var">semi</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-794"></span><span>    </span><span class="hs-keyword">where</span><span>
</span><span id="line-795"></span><span>      </span><span id="local-6989586621680932218"><span class="annot"><span class="annottext">altPattern :: SDoc
</span><a href="#local-6989586621680932218"><span class="hs-identifier hs-var hs-var">altPattern</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">AltCon -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">AltCon
</span><a href="#local-6989586621680932221"><span class="hs-identifier hs-var">con</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(BinderP pass -&gt; SDoc) -&gt; [BinderP pass] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BindingSite -&gt; BinderP pass -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#CasePatBind"><span class="hs-identifier hs-var">CasePatBind</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[BinderP pass]
</span><a href="#local-6989586621680932220"><span class="hs-identifier hs-var">params</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;-&gt;&quot;</span></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-796"></span><span>
</span><span id="line-797"></span><span>
</span><span id="line-798"></span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgOp"><span class="hs-identifier hs-type">pprStgOp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgOp"><span class="hs-identifier hs-type">StgOp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-799"></span><span id="pprStgOp"><span class="annot"><span class="annottext">pprStgOp :: StgOp -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgOp"><span class="hs-identifier hs-var hs-var">pprStgOp</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPrimOp"><span class="hs-identifier hs-type">StgPrimOp</span></a></span><span>  </span><span id="local-6989586621680932216"><span class="annot"><span class="annottext">PrimOp
</span><a href="#local-6989586621680932216"><span class="hs-identifier hs-var">op</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PrimOp -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">PrimOp
</span><a href="#local-6989586621680932216"><span class="hs-identifier hs-var">op</span></a></span><span>
</span><span id="line-800"></span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgOp"><span class="hs-identifier hs-var">pprStgOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPrimCallOp"><span class="hs-identifier hs-type">StgPrimCallOp</span></a></span><span> </span><span id="local-6989586621680932215"><span class="annot"><span class="annottext">PrimCall
</span><a href="#local-6989586621680932215"><span class="hs-identifier hs-var">op</span></a></span></span><span class="hs-special">)</span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PrimCall -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">PrimCall
</span><a href="#local-6989586621680932215"><span class="hs-identifier hs-var">op</span></a></span><span>
</span><span id="line-801"></span><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgOp"><span class="hs-identifier hs-var">pprStgOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#StgFCallOp"><span class="hs-identifier hs-type">StgFCallOp</span></a></span><span> </span><span id="local-6989586621680932214"><span class="annot"><span class="annottext">ForeignCall
</span><a href="#local-6989586621680932214"><span class="hs-identifier hs-var">op</span></a></span></span><span> </span><span class="annot"><span class="annottext">UnaryType
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignCall -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignCall
</span><a href="#local-6989586621680932214"><span class="hs-identifier hs-var">op</span></a></span><span>
</span><span id="line-802"></span><span>
</span><span id="line-803"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680932211"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#AltType"><span class="hs-identifier hs-type">AltType</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-804"></span><span>  </span><span id="local-6989586621680932204"><span class="annot"><span class="annottext">ppr :: AltType -&gt; SDoc
</span><a href="#local-6989586621680932204"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="annot"><span class="annottext">AltType
</span><a href="GHC.Stg.Syntax.html#PolyAlt"><span class="hs-identifier hs-var">PolyAlt</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Polymorphic&quot;</span></span><span>
</span><span id="line-805"></span><span>  </span><span class="annot"><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#MultiValAlt"><span class="hs-identifier hs-type">MultiValAlt</span></a></span><span> </span><span id="local-6989586621680932203"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680932203"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MultiAlt&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680932203"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-806"></span><span>  </span><span class="annot"><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#AlgAlt"><span class="hs-identifier hs-type">AlgAlt</span></a></span><span> </span><span id="local-6989586621680932202"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680932202"><span class="hs-identifier hs-var">tc</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Alg&quot;</span></span><span>    </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680932202"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-807"></span><span>  </span><span class="annot"><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Stg.Syntax.html#PrimAlt"><span class="hs-identifier hs-type">PrimAlt</span></a></span><span> </span><span id="local-6989586621680932201"><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680932201"><span class="hs-identifier hs-var">tc</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Prim&quot;</span></span><span>   </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">PrimRep
</span><a href="#local-6989586621680932201"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-808"></span><span>
</span><span id="line-809"></span><span id="local-6989586621680932703"><span class="annot"><a href="GHC.Stg.Syntax.html#pprStgRhs"><span class="hs-identifier hs-type">pprStgRhs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#OutputablePass"><span class="hs-identifier hs-type">OutputablePass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932703"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgPprOpts"><span class="hs-identifier hs-type">StgPprOpts</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Stg.Syntax.html#GenStgRhs"><span class="hs-identifier hs-type">GenStgRhs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680932703"><span class="hs-identifier hs-type">pass</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-810"></span><span id="pprStgRhs"><span class="annot"><span class="annottext">pprStgRhs :: forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgRhs pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgRhs"><span class="hs-identifier hs-var hs-var">pprStgRhs</span></a></span></span><span> </span><span id="local-6989586621680932180"><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932180"><span class="hs-identifier hs-var">opts</span></a></span></span><span> </span><span id="local-6989586621680932179"><span class="annot"><span class="annottext">GenStgRhs pass
</span><a href="#local-6989586621680932179"><span class="hs-identifier hs-var">rhs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">GenStgRhs pass
</span><a href="#local-6989586621680932179"><span class="hs-identifier hs-var">rhs</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-811"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhsClosure"><span class="hs-identifier hs-type">StgRhsClosure</span></a></span><span> </span><span id="local-6989586621680932178"><span class="annot"><span class="annottext">XRhsClosure pass
</span><a href="#local-6989586621680932178"><span class="hs-identifier hs-var">ext</span></a></span></span><span> </span><span id="local-6989586621680932177"><span class="annot"><span class="annottext">CostCentreStack
</span><a href="#local-6989586621680932177"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621680932176"><span class="annot"><span class="annottext">UpdateFlag
</span><a href="#local-6989586621680932176"><span class="hs-identifier hs-var">upd_flag</span></a></span></span><span> </span><span id="local-6989586621680932175"><span class="annot"><span class="annottext">[BinderP pass]
</span><a href="#local-6989586621680932175"><span class="hs-identifier hs-var">args</span></a></span></span><span> </span><span id="local-6989586621680932174"><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932174"><span class="hs-identifier hs-var">body</span></a></span></span><span>
</span><span id="line-812"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">StgPprOpts -&gt; Bool
</span><a href="GHC.Stg.Syntax.html#stgSccEnabled"><span class="hs-identifier hs-var hs-var">stgSccEnabled</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932180"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">CostCentreStack -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CostCentreStack
</span><a href="#local-6989586621680932177"><span class="hs-identifier hs-var">cc</span></a></span><span> </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-813"></span><span>                    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">(SDocContext -&gt; Bool) -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppUnlessOption"><span class="hs-identifier hs-var">ppUnlessOption</span></a></span><span> </span><span class="annot"><span class="annottext">SDocContext -&gt; Bool
</span><a href="GHC.Utils.Outputable.html#sdocSuppressStgExts"><span class="hs-identifier hs-var hs-var">sdocSuppressStgExts</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">XRhsClosure pass -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">XRhsClosure pass
</span><a href="#local-6989586621680932178"><span class="hs-identifier hs-var">ext</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-814"></span><span>                    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'\\'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">UpdateFlag -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">UpdateFlag
</span><a href="#local-6989586621680932176"><span class="hs-identifier hs-var">upd_flag</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[BinderP pass] -&gt; SDoc
forall a. Outputable a =&gt; [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#interppSP"><span class="hs-identifier hs-var">interppSP</span></a></span><span> </span><span class="annot"><span class="annottext">[BinderP pass]
</span><a href="#local-6989586621680932175"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-815"></span><span>                    </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-816"></span><span>              </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
forall (pass :: StgPass).
OutputablePass pass =&gt;
StgPprOpts -&gt; GenStgExpr pass -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgExpr"><span class="hs-identifier hs-var">pprStgExpr</span></a></span><span> </span><span class="annot"><span class="annottext">StgPprOpts
</span><a href="#local-6989586621680932180"><span class="hs-identifier hs-var">opts</span></a></span><span> </span><span class="annot"><span class="annottext">GenStgExpr pass
</span><a href="#local-6989586621680932174"><span class="hs-identifier hs-var">body</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-817"></span><span>
</span><span id="line-818"></span><span>   </span><span class="annot"><a href="GHC.Stg.Syntax.html#StgRhsCon"><span class="hs-identifier hs-type">StgRhsCon</span></a></span><span> </span><span id="local-6989586621680932171"><span class="annot"><span class="annottext">CostCentreStack
</span><a href="#local-6989586621680932171"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621680932170"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680932170"><span class="hs-identifier hs-var">con</span></a></span></span><span> </span><span id="local-6989586621680932169"><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932169"><span class="hs-identifier hs-var">args</span></a></span></span><span>
</span><span id="line-819"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hcat"><span class="hs-identifier hs-var">hcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">CostCentreStack -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">CostCentreStack
</span><a href="#local-6989586621680932171"><span class="hs-identifier hs-var">cc</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#space"><span class="hs-identifier hs-var">space</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680932170"><span class="hs-identifier hs-var">con</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;! &quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(StgArg -&gt; SDoc) -&gt; [StgArg] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">StgArg -&gt; SDoc
</span><a href="GHC.Stg.Syntax.html#pprStgArg"><span class="hs-identifier hs-var">pprStgArg</span></a></span><span> </span><span class="annot"><span class="annottext">[StgArg]
</span><a href="#local-6989586621680932169"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-820"></span></pre></body></html>